如果我想连接到两个不同的远程服务器,我是否需要不同的 SSH 密钥对?

如果我想连接到两个不同的远程服务器,我是否需要不同的 SSH 密钥对?

我是 SSH 新手,我知道我的机器过去已经生成了 ssh 密钥对来连接服务器。如果我想连接到不同网络中的不同服务器,我是否需要生成单独的密钥对并将它们保存在单独的文件夹中?我该怎么做?如何选择在连接服务器时使用哪个密钥?

我正在使用 Ubuntu 18.04

谢谢!

答案1

您可以在两台服务器上使用相同的密钥对。只需将密钥集的公共部分复制到两台机器上,并将其添加到文件中即可authorized_keys

scp .ssh/id_rsa.pub remote.server.com:
ssh remote.server.com cat id_rsa.pub >> .ssh/authorized_keys

之后您可以id_rsa.pub从远程服务器删除

还值得注意的是,您可以在使用开关运行 ssh 时在命令行上指定私钥-issh -i .ssh/keyForServer1.rsa remote.host.com

如果您的 .ssh 目录中没有 id_rsa.pub,那么您可以生成一个新的密钥对:

cd ~/.ssh
ssh-keygen -t rsa

这将创建你的私钥,id_rsa你永远不应该将其复制到任何地方,因为它相当于你的密码,并且id_rsa.pub你可以将其复制到远程服务器。我建议浏览手册页,因为ssh-keygen它有一些有用的选项


笔记:某些系统(尤其是运行旧版本 OpensSSH 的系统).ssh/authorized_keys2改用

答案2

SSH 服务器使用公钥 - 私钥对作为身份验证机制。客户端生成密钥对,私钥保留在客户端,公钥需要放在Authorized_keys服务器计算机的文件中,通常位于.ssh服务器计算机上用户主配置文件内的文件夹中。

当您通过 SSH 连接时,您将采用您登录的用户的安全配置文件,该用户与.ssh -> Authorized_keys您放置公钥的主文件夹 ( ) 中的用户是同一个。

在客户端,也就是您自己的机器上,您将拥有一个文件,它会保留您之前连接过的服务器known_hosts的标签。ssh

当您第一次连接到时SSH server,通常会提示一条消息询问您是否信任您尝试连接的服务器,如果是,则服务器的详细信息将添加到文件中known_hosts

在您的问题中,您指出您的计算机(打算用作客户端)已经生成了密钥对。您可以获取该密钥对的公钥,并将其放在Authorized_keys任意数量的服务器的文件中。只需确保在服务器端的文件中sshd_config,服务器已启用密钥对身份验证。在您的机器上,如果使用GUI SSH client,您可以选择身份验证机制作为密钥对,然后浏览并选择private key,或者如果使用命令行,则

ssh -i .ssh/<your_private_key> sshserver.com

相关内容