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

How to use private key with ssh login on Mac terminal? My attempts result in `Load key "/path/to/privatekey": invalid format`

我通常在 windows 上使用 putty 进行 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

再次,但后来我得到了

Load key "/path/to/privatekey": invalid format.

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

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-----'网站。

但我还是得到了

Load key "/path/to/privatekey": invalid format.

关于我哪里出错的任何想法?

TLDR:Putty 使用不同的格式

你并不是真的在使用 iTerm2 来 'login to the server'。您正在 iTerm2 中使用 OpenSSH 客户端程序 ssh、运行 from a shell 来执行此操作。问题出在 Putty 和 OpenSSH 之间。 Putty 使用自己的私钥文件格式,这与 OpenSSH 使用的格式不同。 Putty 不能使用 OpenSSH 密钥文件,OpenSSH 不能使用 Putty 密钥文件。

更改文件上的 PEM 标签不会更改其内容。顺便说一句,低于 7.8 的 OpenSSH 通常用于 RSA 密钥文件的 PEM 标签是 -----BEGIN/END RSA PRIVATE KEY-----,如您在网页上显示的 link,而不是您所说的 RSA KEY。但是,将其中任何一个放在一个原本不变的 Putty 密钥文件中,就像拿一盒老鼠药并在上面贴上一个标签,上面写着 'candy'。里面装的还是老鼠药,不是糖果,误以为是糖果吃了就麻烦了

Putty-related 程序 PuttyGen 可以在这些格式之间转换。看到多年前的骗局,当时 SO 的范围包括 non-programming 这样的问题:
How to convert SSH keypairs generated using PuTTYgen (Windows) into key-pairs used by ssh-agent and Keychain (Linux)
和 crossdupes:
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