我需要一个新的密钥对,用于允许登录到服务器的其他主机(但由于安全原因,我无法共享现有的密钥对)。
现在,我在服务器上创建了一对工作正常的新对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
。
当人们尝试设置基于密钥的身份验证时,我看到的最常见问题之一是他们忘记将密钥对的公共部分添加到
authorized_keys
文件中。在
server.example.com
您生成公钥/私钥对时 -根据需要设置(或不设置)密码。
然后将公共一半放入
authorized_keys
文件中 -然后将密钥的私有部分复制到您的客户端计算机,您应该能够连接 -
根据@Haxiel和@RubberStamp(以及我自己的)协议进行编辑,私钥不应留在用于访问的服务器上。
请务必从用于连接的服务器中删除私钥,除非您别无选择。这是一个非常容易避免的安全问题。
应该在本地机器上生成密钥,并通过 scp 或 ssh-copy-id 将公钥复制到远程机器 ... 首选后一种选择,因为它确保公钥正确放置在远程 ~/ .ssh/authorized_keys 文件以及对该文件的适当权限