如何在Mac终端上通过ssh登录使用私钥?我的尝试导致`加载密钥“ / path / to / privatekey”:格式无效

如何解决如何在Mac终端上通过ssh登录使用私钥?我的尝试导致`加载密钥“ / path / to / privatekey”:格式无效

我通常在Windows上使用腻子进行ssh登录,该服务可以选择添加用于登录的私钥。

我切换到Mac,并且使用iTerm2尝试登录服务器。我尝试了命令ssh user@serverIPAddress -p portNumber,但得到了Permission denied (publickey).,我想这是因为我没有像使用Putty那样添加我的私钥。

我尝试在此处查找如何添加私钥

https://docs.rackspace.com/support/how-to/logging-in-with-an-ssh-private-key-on-linuxmac/

我从Windows笔记本电脑中保存了私钥文件,并将其保存到Mac中。我想尝试过

ssh -i /path/to/privatekey user@serverIPAddress -p portNumber

但后来我明白了

'/ path / to / privatekey'的权限0644太开放了。 要求他人不能访问您的私钥文件。 此私钥将被忽略。

我查看了该网站,并提供了保护文件安全的说明,所以我尝试:

chmod 600 /path/to/privatekey

尝试

ssh -i /path/to/privatekey user@serverIPAddress -p portNumber

再次,但是我得到了

加载密钥“ / path / to / privatekey”:格式无效。

我打开文件,发现文件格式与网页中的格式不同。我的文件格式如下

PuTTY-User-Key-File-2: ssh-rsa
Encryption: aes256-cbc
Comment: rsa-key-20200908
Public-Lines: 6
public key
Private-Lines: 14
private key

因此,我删除了除私钥以外的所有内容,并像在网站上一样添加了“ ----- BEGIN RSA KEY -----”和“ ----- END RSA KEY -----”

但我仍然得到

加载密钥“ / path / to / privatekey”:格式无效。

关于我哪里出了问题的任何想法?

解决方法

TLDR:腻子使用其他格式

您并不是真正使用iTerm2来“登录到服务器”。您正在使用OpenSSH客户端程序ssh,在iTerm2中运行 from shell。问题出在Putty和OpenSSH之间。 Putty对私钥文件使用自己的格式,该格式与OpenSSH使用的格式不同。 Putty不能使用OpenSSH密钥文件,而OpenSSH不能使用Putty密钥文件。

更改文件上的PEM标签不会更改其内容。顺便说一句,OpenSSH通常在7.8以下的RSA密钥文件使用的PEM标签为-----BEGIN/END RSA PRIVATE KEY-----,如您链接的网页所示,而不是您所说的RSA KEY。但是将它们中的任何一个放置在原本不变的Putty密钥文件上,就像拿一盒大鼠poisin并在上面贴上一个标签,上面写着“ candy”。内容物仍然是老鼠的毒药,而不是糖果,任何食用它们的人都以为糖果是大麻烦。

与腻子相关的程序 PuttyGen可以转换 。看到几年前的欺骗,当时SO的范围包括这样的非编程问题:
How to convert SSH keypairs generated using PuTTYgen (Windows) into key-pairs used by ssh-agent and Keychain (Linux)
和交叉重复:
https://security.stackexchange.com/questions/146360/ssh-keypair-works-in-putty-but-not-in-openssh-inside-the-puttys-session
https://unix.stackexchange.com/questions/48303/using-rsa-private-key-from-putty-in-filezilla
https://unix.stackexchange.com/questions/74545/what-is-the-difference-between-an-openssh-key-and-putty-key
https://superuser.com/questions/990275/generate-rsa2-key-in-openssh-format

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?