首页 > 解决方案 > SSH 使用端口转发时显示错误的 IP 地址

问题描述

我的用例是我必须通过跳转框访问 AWS ec2 实例。

这是我的 SSH 配置。

Host awsjumpbox
  User sshuser
  HostName jumpboxhostname
  IdentityFile /Users/myusername/.ssh/id_rsa
  LocalForward 8022 10.0.168.43:22

当我执行 SCP 命令将文件复制到 EC2 实例时,它可以工作。

myusername % scp -r -i ~/aws/aws-keypair.pem -P 8022 * ec2-user@localhost:testdir
The authenticity of host '[localhost]:8022 ([::1]:8022)' can't be established.
ECDSA key fingerprint is SHA256:rrwr62yjP2cgUTT9SowdlrIwGi4jMMwt5x4Aj6E4Y3Y.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:8022' (ECDSA) to the list of known hosts.
/etc/profile.d/lang.sh: line 19: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
README.md                                     100% 1064    24.3KB/s   00:00 

但是,当我执行 SSH 命令时。它返回一个奇怪的 IP 地址。

myusername % ssh -i ~/aws/aws-keypair.pem -P 8022 ec2-user@localhost      
ssh: connect to host 0.0.31.86 port 22: No route to host

这个问题的原因是什么?我如何解决它?

谢谢你。

标签: macossshportforwarding

解决方案


不要使用LocalForward和反转流程。

使用ProxyCommandProxyJump。这将允许 SSH 透明地打开与堡垒服务器的会话。

例如,您的配置应该是

Host 10.0.168.43
  User root
  ProxyCommand ssh -W %h:%p sshuser@awsjumpbox
  ...

或者

Host 10.0.168.43
  User root
  ProxyJump sshuser@awsjumpbox
  ...

推荐阅读