为什么这个 ssh 隧道命令在 Mac 上会出错,而在 Linux 上不会出错?

为什么这个 ssh 隧道命令在 Mac 上会出错,而在 Linux 上不会出错?

我试图通过远程登录服务器将 psql 连接隧道连接到 postgres 数据库服务器,并且我在解析参数的方式上遇到了某种差异,这导致了调试一段时间的麻烦。

在装有 bash 5.0.11 和 OpenSSH_8.1p1 的 Linux 计算机上,我可以在不同的控制台中使用以下命令成功执行此操作:

ssh -N -T -L 50000:pgsql96.database.server:5432 [email protected]

psql -h localhost -p 50000 -d databasename -U user

在装有 bash 3.2.57 和 OpenSSH_7.9p1 的 Mac 计算机上,当我运行相同的隧道命令时

ssh -N -T -L 50000:pgsql96.database.server:5432 [email protected]

我收到以下错误

错误的本地转发规范 '50000:pgsql96.database.server:5432[电子邮件受保护]'

最终,我意识到命令行参数解析一定存在差异,因为上面的字符串在转发中引用了远程登录服务器,我通过添加以下内容修复了该命令--

ssh -N -T -L 50000:pgsql96.database.server:5432 -- [email protected]

为什么这两个版本之间这些参数的解析方式不同,以及我应该何时预期会出现这种行为差异?

相关内容