SSH高级用法
之前介绍过SSH入门使用,现总结一些高级用法,主要包括以下三部分:反向代理、正向代理、代理上网。
前期准备
以上三个使用功能分别使用SSH的-R -L -D
功能
SSH代理功能常用的几个参数
1 | -C 压缩所有数据 |
如果登录出现异常,可使用-vvv
显示调试信息。
服务端设置
编辑/etc/ssh/sshd_config
GatewayPorts yes
可以在反向代理时服务端监听所有IP0.0.0.0
而不是只有本机127.0.0.1
。ClientAliveInterval 60
每60秒给客户端发送心跳,ClientAliveCountMax 3
超过三次不响应则关闭连接。- 确保
GSSAPIAuthentication no
GSS认证方式关闭和UseDNS no
DNS反向查询关闭,此设置可提高SSH登录的响应速度,确保PasswordAuthentication yes
密码认证打开(通常默认公钥认证也为打开)。
反向代理
ssh client能访问到的所有服务(包括局域网和本机),通过ssh连接映射到ssh server的端口上去。示例
ssh -CqTfnN -R 80:localhost:80 user@ssh_server
将本机的80端口映射到服务端80端口ssh -CqTfnN -R 8080:192.168.1.190:80 user@ssh_server
将本局域网192.168.1.190的80端口映射到服务端8080端口
如果ssh server在公网,可内网的服务映射到公网上去。
如将本机的远程桌面端口3389反向代理到公网,将内网HPC的SSH端口22代理到公网。
正向代理
将ssh server能访问到的服务(包括局域网和本机),映射到ssh client的端口。
示例 ssh -CqTfnN -L 5901:vnc_server:5901 user@ssh_server
将局域网vnc_server的5901端口映射为本机的5901端口,由于vnc服务通常未加密,使用ssh也可加强通讯安全。需要注意此时去netstat
中查看,会发现本机存在127.0.0.1:5901
的监听,并不是0.0.0.0:5901
,这意味着只能本机访问。如果其他机器也需访问本地转发要使用GatewayPorts
关键字,增加-g
参数即可。
代理上网
常见的SSH代理上网,使用方法:ssh -CqTfnN -D 1080 user@ssh_server
,本机开放1080端口,可以在Internet选项中设置代理服务器地址为127.0.0.1:1080
即可,或使用Chrome的SwitchyOmega
插件配置根据网址决定是否使用代理。
总结
只要ssh server端或client端能访问的服务均可通过ssh端口代理被双方网络中的终端访问,而且所有连接均为加密。要注意的是,需长期保持连接来维持转发功能,一旦网络不稳定则掉线,所以必要时可配置守护进程,如果用于代理上网,这也是相比于shadowsocks的劣势。