ssh隧道技术
SSH 端口转发可以在本地和远程服务器之间创建一个加密的隧道,用于安全地传输数据。SSH 支持三种主要的端口转发模式:动态端口转发、本地端口转发和远程端口转发。
1. 动态端口转发 (SOCKS 代理):
ssh -D [local_port] [user@remote_server]
ssh -D 8080 -fN root@server2
ssh
- 用于建立 SSH 连接的命令行工具。-D 8080
- 设置 SOCKS 代理在本地机器的 8080 端口。通过这个代理,你可以将网络流量转发到server2
,然后从server2
出去。-f
- 将 SSH 会话移至后台,这样你不必保持终端打开。-N
- 告诉 SSH 你不打算在远程服务器上运行任何命令;你只是设置代理。root@server2
- 指定你想要以root
用户的身份登录server2
。
例如,要在本地机器的 8080 端口上创建一个 SOCKS 代理:
ssh -D 8080 [email protected]
然后你可以在你的应用程序(如浏览器)中配置 SOCKS 代理为 localhost:8080
,所有经过这个代理的流量都会经过 example.com
。
2. 本地端口转发:
ssh -L [local_port]:[destination_server]:[destination_port] [user@remote_server]
例如,想要将本地机器的 9000 端口的流量转发到 example.com
服务器上的 other_server_on_network:80
:
ssh -L 9000:other_server_on_network:80 [email protected]
之后你可以在你的本地机器上访问 localhost:9000
,它实际上会被转发到 other_server_on_network:80
。
3. 远程端口转发:
ssh -R [remote_port]:[destination_server]:[destination_port] [user@remote_server]
例如,假设你有一个在本地机器上运行的 web 服务监听在 3000 端口,你想要允许 example.com
上的用户通过他们的 9090 端口来访问它:
ssh -R 9090:localhost:3000 [email protected]
之后,任何在 example.com
上访问 localhost:9090
的尝试都会被转发到你的本地机器的 3000 端口。
这些都是端口转发的基础命令。当然,你可以结合其他 SSH 参数(如 -N
(不执行命令)、-f
(在后台运行)等)来增强端口转发的功能性。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。与我联系email c2VjaW5mby5tQGdtYWlsLmNvbQo=