如何使用 id_rsa.pub 密钥在远程服务器上附加授权密钥

Posted

技术标签:

【中文标题】如何使用 id_rsa.pub 密钥在远程服务器上附加授权密钥【英文标题】:How to append authorized_keys on the remote server with id_rsa.pub key 【发布时间】:2014-06-28 18:08:51 【问题描述】:

如何在远程服务器上使用 id_rsa.pub 密钥通过单个命令从本地计算机上附加授权密钥?

【问题讨论】:

【参考方案1】:

ssh-copy-id user@remote_server

http://linux.die.net/man/1/ssh-copy-id

【讨论】:

这应该是他认可的答案;如果需要排除故障,其他方法可能很有用,但它们是官方推荐方法的 hack-y 替代方法。 这当然只有在被授权仅使用用户/密码登录主机时才有效。否则,将需要找到一种方法从主机系统的外壳中手动附加到 authorized_keys 。如何选择这样做是读者的一项练习。 如果您无权登录远程服务器,这些答案都不起作用。【参考方案2】:

可以这样添加授权密钥(使用双引号,以便在发送前对其进行解释):

ssh user@server "echo \"`cat ~/.ssh/id_rsa.pub`\" >> .ssh/authorized_keys"

【讨论】:

之前一直在使用ssh-copy-id,但是如果您有一个新的公钥(例如一台新的笔记本电脑)要添加到您已经有权访问的一个或几个服务器上,那么这个命令非常有用。这允许您使用来自~/.ssh/ 的密钥/设置进行身份验证,但复制不同的密钥。太棒了!【参考方案3】:

这就是诀窍:

cat ~/.ssh/id_rsa.pub | (ssh user@host "cat >> ~/.ssh/authorized_keys")

将本地公钥附加到远程authorized_keys 文件。

【讨论】:

@user3132194 括号用于在这里分组...确保>>在远程shell上 ssh user@host "cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub 有点短,不需要子shell。 我试图将 Windows 10 内置的 openssh 密钥添加到我的 linux 主机中,这很有效 type %userprofile%\.ssh\id_rsa.pub | ssh user@linux.local "cat >> .ssh/authorized_keys"【参考方案4】:

ssh-copy-id 程序是标准方式,但可以手动将密钥附加到 ~/.ssh/authorized_keys 文件中:

cat ~/.ssh/id_rsa.pub | ssh username@host "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

这不会检查密钥是否已经存在并且可能导致重复。

【讨论】:

【参考方案5】:

最方便的选项是ssh-copy-id 命令。它可以将公钥附加到~/.ssh/authorized_keys。例如:

ssh-copy-id -f -i id_rsa.pub username@host

地点:

-f: 强制模式——复制密钥而不检查它们是否已经安装 -i: [identity_file]

【讨论】:

【参考方案6】:

你可以避免一些引用:

ssh user@host tee -a .ssh/authorized_keys < ~/.ssh/id_rsa.pub

【讨论】:

以上是关于如何使用 id_rsa.pub 密钥在远程服务器上附加授权密钥的主要内容,如果未能解决你的问题,请参考以下文章

Linux怎么把本地代码上传到远程github仓库中

在远程服务器上授权的ssh密钥

openssh设置免密码登录远程服务器

远程登录

jenkins publish over ssh使用

如何在 GitHub Desktop 中使用 SSH 远程?