如何使用id_rsa.pub密钥在远程服务器上追加authorized_keys文件

57
如何使用单个命令将本地机器上的id_rsa.pub密钥附加到远程服务器的authorized_keys文件中?
6个回答

115

ssh-copy-id user@remote_server

这个命令可以帮助你将本地公钥复制到远程服务器的authorized_keys文件中,从而实现无密码登录。更多信息请参考http://linux.die.net/man/1/ssh-copy-id

4
这应该是批准的答案;其他的可能在需要排除故障时有用,但它们是非官方推荐方法的折衷选择。 - olisteadman
1
当然,这仅在用户/密码已被授权登录到主机时才适用。否则,需要找到一种在主机系统上从Shell手动附加到authorized_keys的方法。如何选择执行此操作是读者的练习。 - drkstr101
1
如果您无法登录远程服务器,则这些答案都不起作用。 - Doug

62

可以使用以下方式将授权密钥添加到一行中(使用双引号以便在发送之前进行解释):

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

1
之前一直在使用“ssh-copy-id”命令,但如果你想添加一个新的公钥(例如新笔记本电脑)到你已经可以访问的一个或多个服务器中,这个命令就非常好用了。这样就可以使用“~/.ssh/”中的密钥/设置进行身份验证,但复制不同的密钥。太棒了! - berezovskyi

32

这就是窍门:

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

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


@user3132194 这里使用括号进行分组... 确保 >> 在远程 shell 上。 - wcochran
2
ssh user@host "cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub 比较简短,而且不需要子shell。 - Sameer
1
我试图将Windows 10内置的openssh密钥添加到我的Linux主机中,这个命令可以实现:type %userprofile%\.ssh\id_rsa.pub | ssh user@linux.local "cat >> .ssh/authorized_keys" - Adarsha

14

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

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

这并不检查键是否已经存在,可能会导致重复。


12

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

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

说明:

  • -f:强制模式 -- 复制密钥时不尝试检查密钥是否已安装
  • -i[identity_file]

5

你可以使用以下方法避免一些引用:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接