[MacOS 10.12.6 主机,Ubuntu 14.04 LTS 来宾]
我有一个本地 VM 设置,只接受公钥身份验证。到目前为止,我一直在使用需要输入密码的密钥,而且这种安排工作正常。但是,我现在需要设置一个脚本来自动为我执行 scp。
由于我既不想让脚本暂停以提供密码,也expect不想自动执行此操作,因此我决定使用没有密码的第二个密钥。
在我看来,ssh-copy-id它无法处理这种情况,因为它使用-i参数来告诉它上传哪个密钥,因此我无法指定使用哪个密钥登录。
所以,我的问题是,如何首先ssh-copy-id接受用于登录的第二个密钥?我应该使用ssh-add吗?
(根据我上面的问题ssh-copy-id,我手动复制了密钥并将其添加到我的 authorized_keys 文件中。)
小智 11
ssh-copy-id将密钥附加到远程authorized_keys文件。要添加多个特定键,请使用-I <key-file-name>.
更新
在您发表评论后,我想我问错了您的问题。
您想在服务器上安装另一个密钥时使用一个密钥进行身份验证。
ssh-copy-id不提供命令行选项来选择在执行时进行身份验证的密钥ssh-copy-id。
但它-o通过到ssh. 所以:
ssh-copy-id -i ~/.ssh/<your-new-id-to-install> -o 'IdentityFile ~/.ssh/<your-already-existing-id>' <servername>
Run Code Online (Sandbox Code Playgroud)
您也可以使用ssh-agent,在这种情况下,只要正在运行,您就不必在使用ssh, scp, ssh-copy-id, aso时输入密码ssh-agent。
我添加了同样的问题,所以我将分享我的成功故事,这是对 @sborsky 答案的改进。您不需要 ssh-agent 也不需要复杂的技巧。
在执行建议的命令时,我得到以下信息:
/usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.
(if you think this is a mistake, you may want to use -f option)
Run Code Online (Sandbox Code Playgroud)
事实上,是的,这是 ssh-copy 的错误。只需使用-f开关即可工作:
ssh-copy-id -f -i ~/.ssh/id_rsa.pub -o 'IdentityFile ~/ssh-private-key.key' user@server.domain
Run Code Online (Sandbox Code Playgroud)
您将看到(除其他外)重要的一行:Number of key(s) added: 1
现在您将能够使用基于密钥的 SSH 身份验证进行连接:ssh user@server.domain
| 归档时间: |
|
| 查看次数: |
6074 次 |
| 最近记录: |