其他分享
首页 > 其他分享> > SSH 端口转发 - 案例,命令及服务器配置

SSH 端口转发 - 案例,命令及服务器配置

作者:互联网

SSH 端口转发 - 案例,命令及服务器配置

三种转发类型

简单理解: ABC三台机 AC机器无法直接互通, 但是B分别能和AC互通, 所以AC通过B转发互通

本地 SSH 端口转发

将远程 server 的某个端口映射到本地的某个端口,通常用于A机器通过B登录C , 因为无法直接连通C,但是B可以连通C的情况

(如果是跳板机登录其他服务器,可以使用-J 参数跳转)

访问路径: 自己或者同局域网用户 --> 本机:Port --> SSH隧道 --> 跳转机 --> 远程服务:Port

Command:

ssh -L [本地主机:]本地主机端口:远程网络主机:远程网络主机端口 转发服务器
ssh -L 0.0.0.0:8080:HOST_C:8080 root@HOST_A			# 本地主机可以忽略不写,默认是127.0.0.1
ssh -L 127.0.0.1:8080:HOST_C:8080 root@HOST_A		# 自查127.0.0.1和0.0.0.0区别

Example:

* `ssh -L 8000:10.10.30.3:10000 10.10.20.2`  # 通过ssh 登录 10.10.20.2 ,将远程10.10.30.3的端口10000映射到本地计算机的8000端口上
* `ssh -L 10086::10086 10.10.20.2` 			# 将10.10.20.2的10086端口映射到本地

远程端口转发

将本机(或本地局域网中其他服务器)某个端口,映射到服务器的端口上,通常用于提供给外网访问(因为服务器有公网IP鸭)

访问路径: 用户 --> Server:Port —> SSH隧道 --> 本地主机端口 --> 本机服务端口(或局域网其他主机)

重要提示:

默认情况下,OpenSSH 只允许从服务器本机连接到远程转发端口,使用netstat -anlp 查看监听端口时能看到监听的是 127.0.0.1:Port
如何能让其他用户通过Server IP访问呢 ? 需要监听 0.0.0.0:Port
修改服务器的 /etc/ssh/sshd_config ,修改或添加一行,有如下三个可选项
GatewayPorts No		(设默认只允许来自服务器主机的本地连接)
GatewayPorts Yes 	(Internet上的任何人都可以连接到远程转发端口)
GatewayPorts clientspecified 	(可以指定一个可以连接的IP地址,如果没有指定的话,则任何人都可以访问)

Command:

ssh -R [登录主机:]登录主机端口:本地网络主机:本地网络主机端口  代登录主机

Example:

服务器端配置

必须在服务器上启用 OpenSSH 服务器配置文件中的 AllowTcpForwarding 选项,才能允许远程端口转发。

不过默认情况下该功能是打开的。有如下可选项:

另一个选项是 AllowStreamLocalForwarding,它可以用于转发 Unix 域套接字。它允许使用与 AllowTcpForwarding 相同的值。默认值是yes。

AllowTcpForwarding remote 
AllowStreamLocalForwarding no

动态端口转发

无需固定指定被访问目标主机的端口号。这个端口号需要在本地通过协议指定,该协议就是简单、安全、实用的 SOCKS 协议。

简单讲就是, 通过sock代理将所有流量通过server转发. server能访问的ip,你也就都能访问了

Command:

ssh -D [本机:]本机端口  

Example:

# 如何使用?
举例 
	* 浏览器设置sock代理为 server:端口
	* ssh -o ProxyCommand='/usr/bin/nc -X 5 -x 127.0.0.1:5000 %h %p' user@host2 # 给ssh套上sock代理并通过代理登陆host2

注意事项

标签:20.2,主机,端口,SSH,转发,服务器,ssh
来源: https://blog.csdn.net/myifeng1/article/details/117982193