正如许多其他人遇到的那样,我的系统位于“远程” DHCP 路由器后面,出于各种原因,该系统需要使用反向端口映射与“本地”系统可靠地连接 - 基本上是为了备份和维护。
令人高兴的是,我使用 ssh 的出站连接与我的“本地” Fedora 服务器建立连接,一切顺利。
不幸的是,它随后就停止工作了。
有什么变化?本地系统升级了,哦,我不确定 Fedora 的版本,但可能是 28 左右;我刚刚用 Fedora 38 上的新设置将其全部替换。
设置“完全相同”,但显然并非如此!
“远程”系统使用:
ssh -N -R :<port>:localhost:22 <user>@<local_system>
“远程”端看到:
Warning: remote port forwarding failed for listen port <port>
在“本地”方面,/var/log/secure
我们看到:
May 30 18:18:38 server1 sshd[45591]: Accepted publickey for <user> from <remote_IP> port 41158 ssh2: RSA SHA256:<some_key>
May 30 18:18:38 server1 sshd[45591]: pam_unix(sshd:session): session opened for user <user>(uid=<uid>) by (uid=0)
May 30 18:18:38 server1 sshd[45593]: error: bind [127.0.0.1]:<port>: Permission denied
好的,那么:权限被拒绝 - 似乎足够清楚!但是什么权限,在哪里?我该如何解决它?
答案1
当前有效的“特权”(因此ssh
假定不可用)和“非特权”端口之间的边界可以通过以下命令找到:
cat /proc/sys/net/ipv4/ip_unprivileged_port_start
如果低于该数字,则不要将其用于此目的,高于该数字则没问题。此外,由于措辞方式,人们会认为恰好是该数字的端口也是无特权的,因此也是可以的。
关于此方法的其他方面,例如端口号过大,作者仍不清楚。但是,我的问题已经解决,也许这也会帮助其他人。