我是 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 时在命令行上指定私钥-i
:
ssh -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