ssh 代理转发功能

ssh 是每一个运维人员最熟悉的工具了。可是它的神奇功能你可能并不清楚。今天就用例子说一说 ssh 的代理转发功能。web

 

1、代理远程端口到本地bash

  如上图中 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。运维

 

2、代理本地端口到远端(内网穿透)ssh

 

  如上图 Server A 有公网 IP,Server B 没有公网 IP,Server B 上有 web 服务。Server B 能够 ssh 到 Server A。Server A 不能直接连到 Server B。如何能让 Client 访问到 Server B 的 web 服务呢?工具

下面一条 ssh 命令帮你搞定ui

# 在 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 服务。3d

 参数具体含义以下:代理

  • -q: quiet模式,忽视大部分的警告和诊断信息(好比端口转发时的各类链接错误)

  • -T: 禁用tty分配(pseudo-terminal allocation)

  • -f: 登陆成功后即转为后台任务执行

  • -N: 不执行远程命令(专门作端口转发)

  • -n: 重定向stdin为/dev/null,用于配合-f后台任务

  • -C: 开启压缩

相关文章
相关标签/搜索