如何使用 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 密钥在远程服务器上附加授权密钥的主要内容,如果未能解决你的问题,请参考以下文章