如何使用mosh连接到NAT后面的服务器

时间:2014-12-18 06:01:48

标签: udp nat mosh

我想通过mosh连接到NAT后面的服务器。我无法触摸路由器将其设置为upnp支持,但我已申请UDP端口转发9807-> 60000,以及ssh端口转发原因。

那么,无论如何通过命令行args或客户端和/或服务器端的conf文件指定服务器端口?

注意:以下不起作用!!

mosh -p 9807 user@my_server

修改

我首先尝试ssh到我的服务器,然后手动运行mosh-server -p 60000,然后从另一个终端运行mosh -p 9807 my_server。这会导致错误:

Error binding to IP my_server_ip: bind: Address already in use

那说:

  1. 港口前进正在运作。
  2. mosh尝试在端口60000安装mosh-server。
  3. 感谢。

1 个答案:

答案 0 :(得分:0)

让我建议以下概念验证方法连接到NAT后的mosh服务器。可以说我们有以下计算机:

    NAT后面的
  • client_host ,我们要从中连接到mosh服务器
  • server_host 在另一个运行mosh服务器的NAT之后。注意,在此方法中,client_host仍需要对server_host的直接SSH访问以启动mosh服务器。服务器上的ssh -R ... relay_host可能会有帮助。
  • relay_host ,该地址具有公开可见的IP地址,可由我们控制。

我们这样做:

  1. relay_host 上安装并运行udprelay工具。它将从一个端口接收到的所有内容重复发送到另一个端口,反之亦然。
    relay_host> udprelay 0.0.0.0 34730 34731
    
    上面提到的端口号已硬编码到客户端脚本中,但可以轻松更改。另外请注意,目前udprelay并不安全。
  2. server_host 上安装mosh-nat-server.sh,只需将其放在PATH中提到的任何文件夹中即可。确保在那里也安装了流行的socat工具。
  3. 最后,在客户端上,按以下方式运行mosh-nat-client.sh
    client_host> mosh-nat-client.sh SERVER_SSH_NAME RELAY_IP
    
    该脚本使用ssh SERVER_SSH_NAME <mosh-nat-server.sh ARGS>调用 server_host ,记录密钥并使用它来运行mosh-client。棘手的部分是在服务器的NAT上打一个洞,让双方在udprelay见面。

另请参见不错的blog post,它描述了一种稍有不同的情况。在以上术语中,它显示了如何从 relay_host 连接到 server_host 。作者不使用udp中继,但他仍然需要笨重的LD_PRELOAD机械。令人惊讶的是,它确实起作用。