我试图通过bastion(跳转框(将SSH连接到EC2,但遇到了问题。我用.ssh/config
尝试了它,它成功了。但我想把它作为一个命令来做,而不是用.ssh/config
(我知道这是正确的方法(
本地主机--->堡垒--->ec2
ubuntu用户出现在bastion&ec2,密钥(dev-key.pem(仅存在于本地主机上。
我尝试了一堆解决方案:
local-host$ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /home/ubuntu/automator/dev-key.pem -A -t ubuntu@${bastion} -A -t ssh -o UserKnownHostsFile=/dev/null -o -i /home/ubuntu/automator/dev-key.pem StrictHostKeyChecking=no ubuntu@${ec2} "hostname > /tmp/hostname.txt"
错误:
Permission denied (publickey).
有人能帮我吗?
根据文档,您可以使用ssh -J
选项:
-J[user@]host[:port]首先通过ssh连接到pjump host[(/iam/jump host(,然后从那里建立到最终目的地的TCP转发,连接到目标主机。
所以你的命令是:
local-host$ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /home/ubuntu/automator/dev-key.pem -J ubuntu@${bastion} ubuntu@${ec2} "hostname > /tmp/hostname.txt"