![什么可能导致我的 ssh 端口转发失败?](https://linux22.com/image/141513/%E4%BB%80%E4%B9%88%E5%8F%AF%E8%83%BD%E5%AF%BC%E8%87%B4%E6%88%91%E7%9A%84%20ssh%20%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E5%A4%B1%E8%B4%A5%EF%BC%9F.png)
我正在我的 qnap nas 上进行设置syncthing
,目前我想将 nas 的 GUI 转发到位于同一网络上的笔记本电脑。 GUI 可在 nas 的端口上使用8384
:
[~] # nc -zv 127.0.0.1 8384
localhost [127.0.0.1] 8384 (?) open
现在,要从笔记本电脑访问此服务,我使用
ssh -p 50022 -L 9090:127.0.0.1:8384 admin@nasipaddress -v
,如上所述这里(-v
添加用于调试)。执行此操作,然后在笔记本电脑的浏览器上访问 127.0.0.1:9090,会在终端中出现以下错误(终端进入由ssh
上述命令打开的 nas):
[~] # debug1: Connection to port 9090 forwarding to 127.0.0.1 port 8384 requested.
debug1: channel 3: new [direct-tcpip]
channel 3: open failed: administratively prohibited: open failed
debug1: channel 3: free: direct-tcpip: listening port 9090 for 127.0.0.1 port 8384, connect from 127.0.0.1 port 36462 to 127.0.0.1 port 9090, nchannels 4
此消息重复 10 次,每次将端口36462
增加2
。这administratively prohibited
似乎暗示这是一些设置,我猜是在 nas 本身上,我会调查一下。不过,我也不确定所使用的端口 ( 36462
) 来自哪里。
在 中sshd_config
,我已设置AllowTcpForwarding
为yes
,并且PermitOpen
不存在,根据这个问题,我已经添加PermitTunnel yes
了这个帖子。我的整个sshd_config
:
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
PermitRootLogin yes
UseDNS no
Subsystem sftp /usr/libexec/sftp-server
AllowTcpForwarding yes
AllowUsers admin
PermitTunnel yes
更改配置后,我重新启动了 ssh 守护进程。
我正在使用授权密钥,所有行都.ssh/authorized_keys
包含ssh-rsa l0ngcrpt0grAph1cK3Y descriptive name
编辑:我重写了问题以反映新信息。
编辑:解决了!
结果是,sshd_config
重新启动 ssh 守护程序时,对 qnap nas 所做的更改将被撤消。是的,我知道。因此,确保该行AllowTcpForwarding yes
存活的唯一方法是通过另一种方式添加它,如下所示:
setcfg LOGIN "SSH AllowTcpForwarding" TRUE
这做在 sshd 重新启动和系统重新启动后仍然存在。
答案1
您确定sshd
NAS在编辑sshd_config
文件后已重新启动吗?如果没有,它可能仍在使用旧的设置。
NAS 可能有一个软件防火墙,它会回答从 127.0.0.1 到端口 8384 的连接尝试,并显示“管理禁止”ICMP 错误,或者端口 8384 中的应用程序本身可能会执行相同的操作。
或者,sshd
NAS 设备中的 可能已编译为不具有端口转发功能,导致它对端口转发尝试做出“管理禁止”响应,无论您在其sshd_config
文件中放入什么内容。