我试图通过远程登录服务器将 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]
为什么这两个版本之间这些参数的解析方式不同,以及我应该何时预期会出现这种行为差异?