ssh 代理转发功能
ssh 是每个运维人员最熟悉的工具了。但是它的神奇功能你可能并不清楚。今天就用例子说一说 ssh 的代理转发功能。
一、代理远程端口到本地

如上图中 Client 到 Server A 的网络是通的,Server A 到 Server B 的网络也是通的,Client 到 Server B 的网络不通。Client 怎么能一次 ssh 就连到 Server B 呢?
下面一条 ssh 命令帮你搞定
# 在 Server A 上执行 ssh -qTfNnC -L 10.0.0.2:9022:127.0.0.1:22 root@172.25.0.2
有了上面的命令,然后在 Clinet 执行 `ssh -p 9022 10.0.0.2` 即可登录到 Server B。
二、代理本地端口到远端(内网穿透)

如上图 Server A 有公网 IP,Server B 没有公网 IP,Server B 上有 web 服务。Server B 可以 ssh 到 Server A。Server A 不能直接连到 Server B。如何能让 Client 访问到 Server B 的 web 服务呢?
下面一条 ssh 命令帮你搞定
# 在 Server B 上执行 ssh -qTfNnC -R '[::]:8080:127.0.0.1:80' root@123.57.215.128 # 远程服务器 123.57.215.128 sshd 需要开启 `GatewayPorts yes` # grep GatewayPorts /etc/ssh/sshd_config# GatewayPorts yes
有了上面的命令,然后在 Client 直接访问 http://123.57.215.128:8080/ 就访问到了 Server B 的 web 服务。
参数具体含义如下:
-
-q: quiet模式,忽视大部分的警告和诊断信息(比如端口转发时的各种连接错误)
-
-T: 禁用tty分配(pseudo-terminal allocation)
-
-f: 登录成功后即转为后台任务执行
-
-N: 不执行远程命令(专门做端口转发)
-
-n: 重定向stdin为/dev/null,用于配合-f后台任务
-
-C: 开启压缩

浙公网安备 33010602011771号