内网穿透与端口转发


作为生信人,远程工作是必要的,所以最近简单了解了一下两项重要的远程技术。想要了解详细原理,请翻阅参考资料,这里仅记录常用命令。

内网穿透

主机或服务器处于 局域网/内网 当中,是不能直接通过 公网/外网 进行访问的。所以为了实现远程访问,就要将内网服务器地址端口映射到外网,实现内网穿透,允许外网访问。

主要资料:

师兄已经做好了实验室服务器的内网穿透,我就坐享其成了,先把资料放在这里,以后有需要再来细说。

ssh 端口转发

ssh 平时主要被我用来登录服务器,其实还有很多用途,其中一个就是端口转发,搭建两台服务器之间通信加密跳板。
百度百科:
端口转发(Port forwarding)是安全壳(SSH) 为网络安全通信使用的一种方法。SSH可以利用端口转发技术来传输其他TCP/IP协议的报文,当使用这种方式时,SSH就为其他服务在客户端和服务器端建立了一条安全的传输管道。端口转发利用本客户机端口映射到服务器端口来工作。

主要资料:

本地转发:

ssh -C -f -N -L listen_port:DST_Host:DST_port user@Tunnel_Host -p Tunnel_Host_sshport

参数说明:

# -N 不打开远程shell,处于等待状态,只是搭好了隧道,不ssh连接远端。用于转发端口(PS:无ssh登陆日志)
# -f 后台执行
# -C 数据压缩传输

# listen_port: 本机监听端口
# DST_host: 目标主机地址,在局域网内可为"localhost"
# DST_port: 目标主机端口
# Tunnel_host: 隧道地址
# Tunnel_host_sshport: 隧道端口

如果是在局域网内:转发命令可为:

ssh -Nf -C -L listen_port:localhost:DST_port user@DST_Host

两级跳板,我就把利用SSH隧道构建多级Tunnel中的例子搬过来了:
实验环境:

# Client A:Windows  Localhost
# Tunnel B:Linux    ssh 192.168.1.39:22
# Tunnel C:Linux    ssh 192.168.1.42:55
实验环境

第一层转发:A(localhost:12345)->B(192.168.1.39:22)->C(192.168.1.42:55):

ssh -Nf -C -L 12345:192.168.1.42:55 rootB@192.168.1.39 -p 22

这一步是做了本地12345端口到远程C的55端口映射,A与B之间的通信是SSH加密通信。

第二层转发:ssh(localhost:9833) -> tunnel2(localhost:12345)

ssh -Nf -C -D localhost:9833 rootC@localhost -p 12345

目前还用不到。


文章作者: 梁绍波
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梁绍波 !
评论
  目录