SSH 端口转发(转载)
May 01, 2019LinuxSSH
介绍
SSH 端口转发是一个特别强大好用的功能,这里将自己整理的笔记放在这里,如果你还没用过的话请往下看。
本文主要转载阮一峰的 SSH 端口转发文章,此功能非常强大好用,主要是不需要按照任何额外软件直接能用。
转发
本地端口转发
可作为跳板机访问其他设备等
$ ssh -N -L 2222:host1:22 host2
参数:
- -N 不显示终端
- -f 后台运行
远程端口转发
可用于内网穿透
$ ssh -N -R 8080:localhost:80 host1
默认情况下只侦听来自本地回环 127.0.0.1
的请求,如需要其他设备也能通过端口访问,则需要以下设置。
编辑 /etc/ssh/sshd_config
配置,将 GatewayPorts
参数改为 yes
,然后重启:
/etc/ssh/sshd_config:
GatewayPorts yes
重启 sshd,然后重新执行转发命令:
$ service ssh restart
# or
$ systemctl restart sshd.service
动态转发
当我们在一个不安全的 WiFi 环境下上网,用 SSH 动态转发来保护我们的网页浏览及 MSN 信息无疑是十分必要的。
这种方式其实就是相当于socks代理,他会把本地的所有请求都转发到远程服务器上面,很实用哦,假如说你的那台服务器是在国外的话,你懂的! 创建了一个 SOCKS 代理服务。
当然,此代理配合 SwitchyOmege Chrome 插件使用应该是绝配。命令行 curl 等 可以通过 export http_proxy=proxy_addr:port
来访问。
$ ssh -D <local port> <SSH Server>
X 协议转发
我们日常工作当中,可能会经常会远程登录到 Linux/Unix/Solaris/HP 等机器上去做一些开发或者维护,也经常需要以 GUI 方式运行一些程序,比如要求图形化界面来安装 DB2/WebSphere 等等。这时候通常有两种选择来实现:VNC 或者 X 窗口,让我们来看看后者。
打算找个时间玩玩,对比一下 VNC
$ export DISPLAY=<X Server IP>:<display #>.<virtual #>
其他
稳定性维持(使用 autossh 代替 ssh)
不幸的是 SSH 连接是会超时关闭的,如果连接关闭,隧道无法维持,那么 A 就无法利用反向隧道穿透 B 所在的 NAT 了,所以我们需要一种方案来提供一条稳定的 SSH 反向隧道。
一个最简单的方法就是
autossh
,这个软件会在超时之后自动重新建立 SSH 隧道,这样就解决了隧道的稳定性问题。
macOS:
$ brew install autossh
参数
- -M: 负责通过这个端口监视连接状态
防火墙开放端口
云服务大多配置了防火区与安全组,访问时确保不被拦截,下面是 iptables
例子:
$ sudo iptables -I INPUT -p tcp --dport 6766 -j ACCEPT