我有两个 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_keys
Server2 中,然后重复相同的过程进行反向操作。
您的私钥必须属于您自己,它绝不能离开您的电脑,不要通过在服务器上复制它来使用它,我可以向您保证,这样做不会简化任何事情。
在我的所有 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。