这ssh-copy-id
对于将公钥发送到服务器非常有用。但是如果你现在没有私钥文件,它就会失败。
$ ssh-copy-id -i my_friend_rsa.pub root@example.com
/usr/bin/ssh-copy-id: ERROR: failed to open ID file 'my_friend_rsa': No such file
Run Code Online (Sandbox Code Playgroud)
我不明白这种行为。
对我来说有两种情况:
第一种情况很少见。如果我可以连接到服务器,服务器已经有了我的公钥。所以ssh-copy-id
在这种情况下我不需要。
第二种情况很常见。我授予其他用户访问权限。但我没有他或她的私钥。因此,这种行为使 ssh-copy-id 在第二种情况下无用。
请解释一下为什么ssh-copy-id
需要私钥文件?
因为这个程序的工作方式。引用man ssh-copy-id
:
ssh-copy-id 是一个使用 ssh(1) 登录远程机器的脚本(大概是使用登录密码,因此应该启用密码验证,除非您巧妙地使用了多个身份)。它组装了一个或多个手指的列表?打印(如下所述)并尝试使用每个密钥登录,以查看是否已经安装了其中的任何一个(当然,如果您没有使用 ssh-agent(1) 这可能会导致您反复提示您通过 -短语)。然后它会收集那些登录失败的列表,并使用 ssh 启用远程服务器上的这些密钥登录。
我同意有时这可能太聪明了,但这不是问“为什么”的地方,因为我们不是开发人员。