我需要为允许登录服务器的附加主机提供一个新的密钥对(但由于安全原因我无法共享现有的密钥对)。
现在,我在服务器上创建了一对ssh-keygen -t rsa -f newkey.key
工作正常的新对,然后我将它们的密钥复制到客户端并尝试使用登录,ssh user@server -i newkey.key
但它不会让我进入,而是我得到:
$ ssh user@server -i newkey.key
Warning: Permanently added 'server' (ECDSA) to list ofknown hosts.
Permission denied (publickey).
$
为什么会这样以及我该如何使其工作?newkey.key
权限设置为400
.
答案1
当人们尝试设置基于密钥的身份验证时,我看到的最常见问题之一是他们忘记将密钥对的公共部分添加到文件中authorized_keys
。
在server.example.com
您生成公钥/私钥对时 -
user@server:~/ $ ssh-keygen -t rsa -f newkey.key
根据需要设置(或不设置)密码。
然后将公共的一半放入authorized_keys
文件中 -
user@server:~/ $ cat ~/.ssh/newkey.key.pub >> ~/.ssh/authorized_keys
然后将密钥的私有部分复制到您的客户端计算机,您应该能够连接 -
user@client:~/ $ ls -1 .ssh
authorized_keys
config
newkey.key
user@client:~/ $ ssh -i ~/.ssh/newkey.key user@server
编辑根据 @Haxiel 和 @RubberStamp (和我自己的)协议,私钥不应留在用于访问的服务器上。
请务必从用于连接的服务器中删除私钥,除非您没有其他选择。这是一个非常容易避免的安全问题。
密钥应在本地计算机上生成,并通过 scp 或 ssh-copy-id 将公钥复制到远程计算机...首选后一种选择,因为它确保公钥正确放置在远程 ~/ .ssh/authorized_keys 文件以及该文件的适当权限