在 Linux 操作系统的旧(2001?)脚本中,我遇到过使用-P
命令选项的情况ssh
:
$ ssh -P host.domain -l user
但在ssh
手册页中没有提到任何-P
选项。然而,执行ssh -P host.domain
不会显示任何警告或错误。
那是什么?可能是一个旧的/未记录的选项?
答案1
旧版本手册页:
-P
使用非特权端口。这样您就不能使用 rhosts 或 rsarhosts 身份验证,但它可以用来绕过某些不允许特权源端口通过的防火墙。
[...]
使用特权端口
指定连接另一端时是否使用特权端口。如果启用了 rhosts 或 rsarhosts 身份验证,则默认值为 yes。
直接从源代码:
case 'P': /* deprecated */
options.use_privileged_port = 0;
break;
它将选项设置为 0,无论如何这似乎都是默认值,因此它什么也不做。在不影响功能的情况下,忽略已弃用的选项有助于向后兼容...
该/* deprecated */
更改可以追溯到 2002 年 9 月 4 日。
甚至我上面引用的代码(来自 openssh-portable 7.7)也差不多在最近的提交中被删除:
上游:弃用 UsePrivilegedPort
现在,对运行 ssh(1) setuid 的支持已被删除,请删除支持代码并清除手册页中对其的引用
自 2002 年以来,我们就没有向 ssh(1) 提供 setuid 位。如果有人确实需要从低端口号建立连接,则可以通过一个小的 setuid ProxyCommand 来实现。
好的,马库斯@jmc@djm@
OpenBSD-提交-ID:d03364610b7123ae4c6792f5274bd147b6de717e
它仍然忽略该选项,但甚至不再设置与之相配的内部变量。