ssh端口转发(ssh隧道)

SSH端口转发——本地转发

  • 背景:企业内部服务器C(192.168.0.3)不允许外部直接访问,服务器B(192.168.0.2)是一个ssh服务器,有一个用户A(192.168.0.1)需要从外部连接到企业内部的C服务器。
  • 原理:用户A通过ssh协议连接到B机器上,再通过B机器做跳板,连接至C机器。
  • 图示如下:

我们需要连接C机器的3306端口 命令如下

ssh -Nf -L 18080:192.168.0.3:3306 root@192.168.0.2 -p 22

执行上面命令后我们就可以通过 访问本地的18080就可以连接到C机器的3306端口了

如果我们想要停止这个隧道,直接把后台的隧道进程杀死就可以了,命令如下:

  • linux 关闭进程
#获取ssh的进程:
[root@192.168.0.1 ~]# ps -ef  | grep ssh
root        940      1  0 09:50 ?        00:00:00 /usr/sbin/sshd -D
root       1184    940  0 09:50 ?        00:00:00 sshd: root@pts/0
root       2922      1  0 14:53 ?        00:00:00 ssh -Nf -L 18080:192.168.0.3:3306 root@192.168.0.2 -p 22
root       2954   2877  0 15:06 pts/0    00:00:00 grep --color=auto ssh
# 关闭进程:
[root@121 ~]# kill -9 2922
  • windows 关闭进程
获取进程
netstat -ano |findstr "18080"
#例如上面查出的pid为1234 执行下面命令
taskkill /f /pid 1234 

SSH端口转发——远程转发

如果本机服务器无法直接连接中转服务器和目标服务器,因为加了防火墙我们是无法直接连接,因为在现实生活中,企业处于安全考虑,一般只允许出不允许进,这时候我们就可以让本地服务器充当服务端,中转服务当作客户端主动去连接本机服务器。

需要在B服务器输入命令建立通信隧道

ssh -R -fN  2222:192.168.0.3:22 root@192.168.0.1 -p 22

然后在服务器A(192.168.0.1)上输入以下命令,顺利连接到服务器C(192.168.0.3):

ssh 127.0.0.1 -p 2222

总结

  • 本地机器不能访问远程机器,中间机器可以访问远程机器,本地机器可以ssh登录到中间机器,这种情况下可以使用本地转发。
  • 本地服务器不能访问远程,但中间机器可以访问这两个远程机器,这个情况用远程转发。
分享你的喜爱