![如何使用不同的身份验证方法创建双 ssh 隧道?](https://linux22.com/image/164048/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%96%B9%E6%B3%95%E5%88%9B%E5%BB%BA%E5%8F%8C%20ssh%20%E9%9A%A7%E9%81%93%EF%BC%9F.png)
我有我的本地机器,host1 和 host2。
- 主机 2 只能从主机 1 访问
- 我可以从本地计算机访问 host1
- host1正在使用私钥身份验证方法
- host2 正在使用密码
- host1 和 host2 有不同的用户名
- 我需要从本地计算机访问在 host2 上的端口 1529 上运行的服务
因此,我可以通过以下方式连接到 host1:
ssh -i path_to_key user1@3host1
并通过以下方式从 host1 到 host2:
sshpass -p 'my-pass' ssh user2@host2
到目前为止,我已经尝试过以下命令但没有成功:
ssh -i path_to_key -L 1529:host1:1529 user1@host1 sshpass -p 'my-pass' ssh -L 1529:host2:1529 user2@host2
有任何想法吗?
答案1
您真的需要通过 SSH 连接到第二台计算机以访问其服务吗?
在我看来,更简单的方法是在第一台主机上设置隧道,然后从那里查询 host2 上的服务。在这种情况下,您应该能够使用:
ssh -i path_to_key -L 1529:host2:1529 user1@host1
然后,让 ssh 从您的工作站在后台运行,类似的操作telnet localhost 1529
会将您的连接转发到host2:1529
.