我在其中添加了这个~/.ssh/config
以帮助避免愚蠢的错误:
Host *.prod-domain.com
LocalCommand print "WARNING: PROD" && print "continue ?" && read
PermitLocalCommand yes
当ssh
我尝试连接到prod-domain.com
.
现在,大多数主机都不会公开 ssh,所以我们必须通过网关。我曾经做过
ssh -J gateway.prod-domain.com target.prod-domain.com
但是启用本地命令后,ssh 失败并显示:
Bad packet length 1231976033.
ssh_dispatch_run_fatal: Connection to UNKNOWN port 65535: message authentication code incorrect
直接连接(例如ssh gateway.prod-domain.com
)仍然可以正常工作,如果我评论本地命令,则可以使用跳转进行连接。
本地命令和 ssh 跳转不兼容吗?它是否记录在某处,有没有办法让它工作(比如在“跳跃”时禁用本地命令),或者我可能遇到了错误?
正如
ssh_config
手册页所说:您的问题在于
read
语句,它弄乱了在通过创建的隧道中执行的 SSH 协商过程gateway.prod-domain.com
。您可以配置您的客户端,以便只有“端点”给您警告,网关不会,通过在您
~/.ssh/config
的网关中有一个空条目,如下所示:这样,您尝试执行的操作将起作用,只要确保不要将“prod-domain”服务器用作跳转代理(当然,网关除外)。或者,为了完全避免交互式命令,您可以使用如下内容:
这样,虽然您无法阻止会话建立,但您将收到一个大红色警告。