测试ssh转发

Posted starrebel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试ssh转发相关的知识,希望对你有一定的参考价值。

端口转发提供:

1.加密 SSH Client 端至 SSH Server 端之间的通讯数据。

2.突破防火墙的限制完成一些之前无法建立的 TCP 连接。

但是只能转发tcp连接,想要转发UDP,需要另外安装软件。

 

场景一:

现在有A,B两台机器,可以互相ssh访问,但是B上防火墙组织所有其他端口访问,想通过ssh转发,让A的8000端口访问B上8001端口。

A的ip:192.168.66.19

B的ip:192.168.66.78

B内开启防火墙 systemctl start firewalld。

从A访问B的8001端口会返回:

OSError: [Errno 113] No route to host

在A上配置远程转发:

ssh -L 8000:localhost:8001 -fN test@192.168.66.78

加上不加fN会显示的登陆test@192.168.66.78建立连接,加上之后在后台建立。

修改测试脚本访问本地8000端口:

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((localhost, 8000))
client.send("hello world".encode(utf-8))

B机器上的server代码如下:

import socket
import sys

server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind((192.168.66.78, 8001))

while True:
  print("listening on 8001")
  server.listen(5)
  conn,addr = server.accept()
  print("accept ", addr)

  data = conn.recv(1024)
  print(data)
  conn.close()

结果显示

channel 2: open failed: connect failed: Connection refused

后来发现,B上的server代码需要监听的是本地的8001端口,代码改为:

server.bind((127.0.0.1, 8001))

再测试显示连接成功。

 

参考: https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/

远程转发和本地转发原理一样,区别只是在于在哪台主机上进行配置。

有一个缺点是,ssh转发普通用户就可以设定,如果想要取消转发功能,可以修改/etc/ssh/sshd_config,禁止转发。

 

以上是关于测试ssh转发的主要内容,如果未能解决你的问题,请参考以下文章

ssh通道

使用ssh连接VirtualBox虚拟机

PhpStorm XDebug 通过 ssh 隧道

Linux端口转发-rinted工具部署配置使用

端口转发

如何编写优秀的测试用例,建议收藏和转发