作为生信人,远程工作是必要的,所以最近简单了解了一下两项重要的远程技术。想要了解详细原理,请翻阅参考资料,这里仅记录常用命令。
内网穿透
主机或服务器处于 局域网/内网 当中,是不能直接通过 公网/外网 进行访问的。所以为了实现远程访问,就要将内网服务器地址端口映射到外网,实现内网穿透,允许外网访问。
主要资料:
师兄已经做好了实验室服务器的内网穿透,我就坐享其成了,先把资料放在这里,以后有需要再来细说。
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
目前还用不到。