如何使用 ssh 密钥在两个 ec2 实例之间进行 ssh?

如何使用 ssh 密钥在两个 ec2 实例之间进行 ssh?

我有两个 EC2 实例:

服务器 1,操作系统:Centos - 7.5 服务器 2,操作系统:Centos - 7.5 默认用户名:centos

两者都配置为无密码登录,因此我有 ssh 密钥。

我能够使用我的主机的 ssh 密钥通过 ssh 连接到这两台服务器。

但是当我尝试从服务器 1 ssh 到服务器 2 时,失败了。

我发现私钥位于 /etc/ssh 下

-rw-r-----. 1 root ssh_keys   1679 Oct  7 14:42 ssh_host_rsa_key

错误

sudo ssh -i ./ssh_host_rsa_key [email protected]
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

那么我错在哪里了?

答案1

解决此问题的最佳方法是使用 ssh-keygen 为希望在 Server1 上连接到 Server2 的用户创建一个新密钥,并将该用户的公钥复制到~/.ssh/authorized_keysServer2 中,然后重复相同的过程进行反向操作。

您的私钥必须属于您自己,它绝不能离开您的电脑,不要通过在服务器上复制它来使用它,我可以向您保证,这样做不会简化任何事情。

在我的所有 CentOS 7 服务器中,默认 SSH 配置位于 ~/.ssh 中,私钥通常是~/.ssh/id_rsa,公钥通常是,~/.ssh/id_rsa.pub 这些是您需要为每台机器创建或编辑的仅有的 3 个文件:

~/.ssh/id_rsa
~/.ssh/id_rsa.pub
~/.ssh/authorized_keys

确保 ~/.ssh 目录的 chmod 为 700,并且里面的文件为 600。

ssh-copy-id一旦创建了两组密钥,您就可以将公钥从一台服务器发送到另一台服务器。

答案2

看起来您混淆了按键。

SSH 身份验证使用非对称加密,又称公钥加密。因此,每个密钥由两部分组成,私钥(必须保密)和公钥与另一方共享。

私钥/etc/ssh服务器用于向客户端证明它正在连接到正确的服务器。

登录的私钥存储在客户通常在/home/user/.ssh/

您是否有什么特殊原因想要通过 ssh 从一个实例连接到另一个实例?从安全角度来看,这不是一个好主意。

调试 ssh:对于调试 ssh,只需使用并根据喜好ssh -vv添加更多。v

答案3

您可以更轻松地在 Server_A 中为用户 centos 创建新密钥:

$ ssh-keygen

创建后,将 /home/centos/.ssh/id_rsa.pub 内容复制到 Server_B 上的 /home/centos/.ssh/authorized_keys

完成后,您可以从 Server_A 无需密码 ssh 进入 Server_B。

相关内容