我正在尝试通过具有隧道的 NAT 实例连接到我的私有 VPC 实例
我定义 -A 使 NAT 实例成为我的密钥的代理,定义 -i 使密钥文件成为代理。尝试
ssh -A -i 'path_to_key' [email protected]
它可以工作并连接到我的 NAT,但尝试通过隧道连接到我的私有实例时,它总是会因为密钥问题而失败
ssh -A -i 'path_to_key' [email protected] ssh -t -t ubuntu@private_instance_ip
我认为它不会将我的密钥从 NAT 传递到私有实例。
当执行ssh-add path_to_key
并运行相同的命令(不包括 -i 部分)时,它也能正常工作。
如何让我的 NAT 将 -i 参数中的密钥传递给私有实例?
答案1
该ssh -A
选项仅适用于您已加载到代理中的密钥,-i
没有自动执行。换句话说,您必须拥有 ssh-agent 和ssh-add
密钥。
ssh-add 'path_to_key'
顺便提一下,你用-t
错了地方——你的内部连接将有一个 tty,但不知道正确的参数(例如窗口大小)。该选项对于外连接(即ssh -t server1 ssh server2
),那么内部连接就变得没有必要了。
还有另一种方法可以建立两跳连接。除了在代理上运行 ssh 之外,您还可以使用 SSH 的 TCP 转发功能在本地运行它:
ssh -i 'path' -o ProxyCommand="ssh -W %H:%P [email protected]" ubuntu@private_instance
这根本不需要-A
代理,因为您的客户端直接连接到私有实例。