如何在 Linux 上配置 tun 接口用于 SSH 端口转发?

如何在 Linux 上配置 tun 接口用于 SSH 端口转发?

我正在尝试将端口 139 从 Windows 机器转发到 tun 接口上 IP 地址为 10.0.0.1 的 Ubuntu SSH 服务器。

这样我就可以通过反向隧道访问我的 Ubuntu 服务器上的机器上的 Windows 共享。

我可以将端口转发到 127.0.0.1,但不能转发到 10.0.0.1。

在 Windows 上,我使用 Tunnelier ssh 客户端。

在我的 Ubuntu 服务器上,auth.log 中打印了以下消息:

Received disconnect from 124.109.51.154: 11: Server denied request for client-side server-2-client forwarding on 10.0.0.1:139.

到目前为止我已经尝试了以下设置:

GatewayPorts yes
PermitTunnel yes
AllowTcpForwarding yes 

在 /etc/ssh/sshd_config 文件中,但它不起作用。

我像这样设置了tun:

sudo tunctl -t loc_0 -u myusername
sudo ifconfig loc_0 inet 10.0.0.1 netmask 255.255.255.0 up

Tunneler ssh 客户端中的设置并不重要,因为我可以将端口 139 成功转发到运行 WinSSHD 服务器的 Windows 计算机上的 Microsoft Loopback Adapter。

版本:Windows 是 XP SP3,Ubuntu 是 10.10。


更新:

我尝试将端口转发到一个号码大于 1024提到了tun的IP地址,它成功连接转发是在 127.0.0.1 上完成的,而不是 tun 的 IP 地址 10.0.0.1。

因此,从 Windows 机器连接时,现在有两个独立的问题:

1) 小于 1024 的端口转发可能被拒绝。我们如何在服务器上允许这种情况?

2)即使我提到 10.0.0.1(这是 tun 的 IP 地址),转发也仅在 127.0.0.1 上完成。

另一次尝试: 我还尝试将 Linux 机器的 22 端口转发到屯斯港55567。显示成功。但是当我尝试使用两个本地地址通过 ssh 进入该端口时,在 Linux 机器的调试显示中,Connection failed: no route to host使用 127.0.0.1 连接时出现错误,而Connection refused使用 tun 的 IP 地址时则出现错误。

因此,无论我们从 Windows 客户端还是 Linux 客户端连接,tun 都无法获取转发端口。

答案1

对于 <1024,您只能通过使用 root 进行 ssh 隧道来执行此操作:

http://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-ssh-beyondshell-tcpip.html

笔记

设置端口转发以监听 1024 以下的端口需要根级别访问。

关于 127.0.0.1,您可能需要在 ssh 设置中使用“-g”:

 -g      Allows remote hosts to connect to local forwarded ports.

答案2

这是怎么回事:

sudo ifconfig eth0:0 10.0.0.1 up
sudo ssh -g -L 139:10.0.0.1:139 user@sambahost

相关内容