macos - 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
这个问题的原因是什么?我如何解决它?
谢谢你。
解决方案
不要使用LocalForward
和反转流程。
使用ProxyCommand或ProxyJump。这将允许 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
...
推荐阅读
- php - 为什么 PostgreSQL 12 数据库服务器不活动
- firebase - Firebase Streambuilder 导航后未更改登录状态
- javascript - 从 For 循环到 ForEach 的转换,带有示例
- php - 文本数据类型的 Elasticsearch index_options=docs 不返回任何搜索结果
- ssis - SSIS 等效项的 M 表达式
- javascript - 如何更改视频控件的大小?
- html - 当我使用“对齐”时,为什么我的图像与其他元素重叠?
- neo4j - 在 Neo4j 中存储多个独立的树
- android - 似乎无法在 React Native 上使用 require 或 uri 显示图像!我究竟做错了什么?
- oracle - REFERENCING NEW TABLE AS 在 sql 中抛出无效引用