如何在多台计算机上使用相同的ssh密钥?

时间:2020-05-26 11:12:54

标签: linux git github ssh ssh-keys

我有一个私人的Github存储库,我想使用同一组ssh密钥从两台不同的Linux机器上访问

对于第一台机器,我跟随Github's instructions生成SSH密钥,并将生成的公共密钥添加到Github。该客户端工作正常。 我在GitHub要点中同时赞扬了我的私钥和公钥,以便在第二个客户端上轻松获取它

在第二台计算机上,我将私钥和公用密钥下载到了必要的目录并授予了相关权限。

wget -O /root/.ssh/id_rsa.pub URL(RAW)
wget -O /root/.ssh/id_rsa URL(RAW)
chmod 700 /root/.ssh
chmod 600 /root/.ssh/id_rsa
chmod 600 /root/.ssh/id_rsa.pub

我认为这可能是我所要做的,但是当我尝试连接时出现以下错误

root@InstanceIDInHexa:~# ssh -T git@github.com                                 

The authenticity of host 'github.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is SHA256:RandomStringOfAlphaNumericCharacters.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,xxx.xxx.xxx.xxx' (RSA) to the list of known hosts.
Load key "/root/.ssh/id_rsa": invalid format
git@github.com: Permission denied (publickey).
root@InstanceIDInHexa:~#

我还检查了所有文件的内容和权限,看起来不错

cat /root/.ssh/id_rsa 
cat /root/.ssh/id_rsa.pub
stat -c "%a" /root/.ssh
stat -c "%a" /root/.ssh/id_rsa
stat -c "%a" /root/.ssh/id_rsa.pub

我这里缺少什么吗?

1 个答案:

答案 0 :(得分:2)

首先,最佳做法是每台计算机的每个用户拥有一个密钥。这是最安全的方法,因为这意味着您可以从一台与另一台计算机无关的计算机上删除访问权限,例如,如果一台计算机丢失或被盗。

但是,话虽如此,如果您真的想要这样做并且想忽略最佳实践,则可以将id_rsaid_rsa.pub文件复制到另一台计算机上,那应该可以。但是,在这种情况下,您是在较新的计算机上生成密钥的,而较新的计算机则使用较旧的计算机使用不同的私钥格式或更现代的加密算法对其进行加密。较旧的RSA密钥的默认加密方法PKCS#1格式往往有很多不足之处,而且不太安全。

解决此问题的最简单方法是生成一个新的Ed25519密钥对,因为它们始终使用OpenSSH格式,您可以使用ssh-keygen -t ed25519来完成。如果要复制,则文件为~/.ssh/id_ed25519~/.ssh/id_ed25519.pub。这也是近来最受欢迎的密钥格式,但是如果您使用的是CentOS 6之类的古老版本,则可能不支持。

如果您不想这样做,则可以使用ssh-keygen -issh-keygen -e将现有的私钥转换为适当的格式。这应该在较新的机器上完成,这是生成密钥的机器。手册页记录了支持的选项和格式。您可以在该计算机上使用file来查找私钥所在的格式。