SSH 隧道 NFS 从远程到本地错误:地址已被使用

SSH 隧道 NFS 从远程到本地错误:地址已被使用

我在不可配置的 NAT 后面有一个 Synology 服务器,在可配置的 NAT 后面有一个 Linux 机器。我想建立一个 autossh 隧道,以便在 Linux 机器上安装 NFS 驱动器(由 Synology 机器共享)。

从 synology 框中,我执行以下操作:

autossh -v -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -i /path/id_rsa -NL 2049:localhost:20049 [email protected] -p <forwarded_ssh_port>

但是,我收到以下错误:

debug1: Local connections to LOCALHOST:2049 forwarded to remote address localhost:20049
debug1: Local forwarding listening on ::1 port 2049.
bind [::1]:2049: Address already in use
debug1: Local forwarding listening on 127.0.0.1 port 2049.
bind [127.0.0.1]:2049: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 2049
Could not request local forwarding.

确实(当然),NFS 正在 synology 服务器上监听 2049:

user@synology:~$ netstat -plant|grep 2049
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -
tcp6       0      0 :::2049                 :::*                    LISTEN      -

关于如何建立该隧道同时避免监听端口冲突,您有什么想法吗?

提前致谢...

答案1

你的隧道是倒着的:如果 Linux 服务器想要挂载文件系统,那么 Synology 上的 ssh 不需要监听任何端口(为什么会这样,如果真实的NFS 服务已经这样做了)。

相反,隧道的“监听”端需要位于 Linux 服务器上(即您需要一个 SSH-R隧道),然后它将连接到 Synology 上的真实 NFS 监听器。

ssh -R 22049:localhost:2049 [email protected]

(您也可以反向指定端口——监听端口首先出现,连接目标最后出现。)

答案2

好的,我想我解决了。我需要使用 -R,而不是 -L:

autossh -v -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -i /path/id_rsa -NR 2049:localhost:20049 [email protected] -p <forwarded_ssh_port>

相关内容