我通常使用特定的密钥连接到特定的服务器,如下所示:
$ ssh -i key.pem ec2-user@server
昨天我意识到我一直在使用的密钥实际上并不在ec2-user
的authorized_keys
文件中。 只列出了一个密钥,我的机器上也有这个密钥。
我想知道如何使用上述命令成功连接。有没有办法让程序ssh
明确描述它使用哪个键进行连接?
答案1
当提供-v
连接命令时,ssh
它会显示几行,例如
debug1:提供公钥:/home/foo/.ssh/id_rsa SHA256:hash debug1:服务器接受密钥:/home/foo/.ssh/id_rsa SHA256:hash
您可以从客户端的角度查看所使用的密钥。
在服务器上应该记录/var/log/auth.log
如下:
sshd[1668]:
<user>
从<ip>
端口<port>
ssh2 接受的公钥: RSA SHA256:`
我怀疑您实际上会在 上看到密钥authorized_keys
,也许在~/.ssh/id_rsa
或类似文件中(默认情况下会加载它们)。如果您想使用提供的密钥,并且只使用那个,即使代理上有其他公钥文件或密钥,您也应该设置IdentitiesOnly=yes
,例如
ssh -oIdentitiesOnly=yes -i key.pem ec2-user@server
虽然对于您经常连接的主机,我建议进行以下设置~/.ssh/ssh_config
:
Host server
User ec2-user
IdentitiesOnly yes
IdentityFile key.pem
所以你可以这样做ssh server