SSH端口转发
参考文档
精美图片来自B站 | IBM上的完整实践 以及对他的整理 | 使用MOBAXTERM的实践
概述
-
远程端口转发,使用-R参数,内网穿透
-
动态端口转发,使用-D参数,用作代理上网
-
本地端口转发,使用-L参数,是动态端口转发的阉割版本,只能转发指定的端口,用
(wireshark?)
监听? -
其他参数,注意
-g
参数,加了这个参数局域网电脑可以访问配置过的电脑达到转发-f 要求 ssh在执行命令前退至后台.它用于当ssh准备询问口令或密语,但是用户希望它在后台进行.该选项隐含了-n选项.在远端机器上启动 -N 不执行远程命令.用于转发端口. -C 要求进行数据压缩 (包括stdin, stdout, stderr以及转发X11和TCP/IP连接 的数据).压缩算法和gzip(1)的一样,协议第一版中,压缩级别 “level” 用CompressionLevel选项控制.压缩技术在modem线路或其他慢速连接上很有用,但是在高速网络上反而 可能降低速度.可以在配置文件中对每个主机单独设定这个参数. -g 允许远端主机连接本地转发的端口 -q 安静模式.消除所有的警告和诊断信息 -T 禁止分配伪终端 -n 把 stdin重定向到/dev/null (实际上防止从stdin读取数据). ssh在后台运行时一定会用到这个选项.它的常用技巧是远程运行X11程序.
中转ssh(server)的设置
vi /etc/ssh/sshd_config
AllowAgentForwarding yes
#AllowTcpForwarding yes
GatewayPorts yes
重启服务 service sshd restart
远程端口转发(内网穿透)
网络情况如下,我们可以使用这种形式访问到右边私网的8080,具体的设置可以看mobax
的图更好
ssh -R 12310:127.0.0.1:5500 root@xxx.com # 在私网电脑运行,把5500端口映射为公网的12310端口
本地端口转发
访问我们本地机器A的a1端口相当于访问远程机器C的c1端口,中间由B机器转发
动态转发
这个好理解,就是代理上网
保持持久的SSH链接的两种方法
-
在客户端配置
vi /etc/ssh/ssh_config(注意不是/etc/ssh/sshd_config文件),后面添加 Host * ServerAliveInterval 30
这表示要让所有的ssh连接自动加上此属性;如果要指定服务端,如下:使用-o的参数
ServerAliveInterval
来设置一个防止超时的时间ssh -o ServerAliveInterval=30 IP地址
- 编辑服务器
/etc/ssh/sshd_config
,最后增加ClientAliveInterval 60 ClientAliveCountMax 1
这 样,SSH Server 每 60 秒就会自动发送一个信号给 Client,而等待 Client 回应
- 编辑服务器
名词理解
本地端口转发:
访问本地的端口比如 localhost:10000 相当于访问远端的端口 xx.xx.xx.xx:22
远程端口转发: 内网穿透
访问远程的端口xx.xx.xx.xx:33389 相当于访问远程端口相连的一个机器的某个端口比如3389 ssh建立方式是从相连机器发起到远程的云主机的
动态端口转发: 代理上网 这里可以做tcp抓包应该
访问本地的端口的数据,都是相当于使用远程云主机去访问
Ssh 链接是本地到云主机
Local port forwarding – connections from an SSH client are forwarded,
via the SSH server, to a destination server;
Remote port forwarding – connections from an SSH server are forwarded,
via the SSH client, to a destination server;
Dynamic port forwarding – connections from various programs are forwarded,
via the SSH client to an SSH server,
and finally to several destination servers;