问题描述
当我尝试通过堡垒服务器连接到专用网络中的 EC2 时,我收到此消息:
<username>@<ec2-server>: Permission denied (publickey)
但是,我可以从本地机器通过 ssh 连接到堡垒机,也可以从堡垒服务器通过 ssh 连接到 EC2,
这是我正在使用的 .ssh/config
:
Host <ec2-servers>*
IdentityFile ~/.ssh/id_rsa
User <username>
这是我用来 ssh 的命令:
ssh -J <bastion-server> <ec2-server>
注意:权限很好(~/.ssh/
为 700,~/.ssh/*
为 600)
预先感谢您的帮助!
解决方法
远程系统上可能没有名为“用户名”的用户。确保两个系统具有相同的用户名和公钥。
,您能否像您提到的 username
和 jump host
尝试连接的 actual instance
一样尝试以下配置?
Host 10.2.2.* #ec2 servers cidr range
ProxyJump jumpuser@proxy.example.com
我认为可能不需要指定 IdentityFile ~/.ssh/id_rsa
,因为这似乎是您正在使用的系统上的默认键。
确保 jumpuser
存在并具有适当的权限。
仅出于调试目的,请使用调试选项手动运行此程序
ssh -vvv -J username@host1:port username@host2:port
将提供大量信息,您可能会看到问题所在。
如果您使用 ssh-agent
,它会删除所有身份,尝试也可能会有所帮助。
ssh-add -D
How to Access a Remote Server Using a Jump Host
How to Set Up an SSH Jump Server
,通过在远程 ec2 实例的 authorized_keys
中添加本地 ssh 公钥来修复它。