You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python os模块中自动通过SSH主机密钥验证连接Glue端点?

解决SSH自动连接时的Host Key Verification Failed问题

这个问题我之前在自动化AWS Glue开发端点的Zeppelin访问时也碰到过——本质是SSH第一次连接陌生主机时,会弹出主机密钥验证提示,而os.system执行的脚本没法手动输入yes确认,所以直接报错了。这里给你两个可行的解决思路:

方案1:临时跳过主机密钥验证(快速便捷)

直接给SSH命令添加两个参数,让它自动跳过密钥校验步骤,同时不记录主机密钥到本地文件:

修改你的ssh_string为:

ssh_string = "ssh -i pem_file_path -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -NTL 9007:169.254.76.1:9007 glue@ip_address"

然后再运行原来的Python代码就可以自动完成连接了。

⚠️ 注意:这个方法虽然方便,但会跳过SSH的主机真实性校验,有一定安全风险,更适合测试环境或者你完全信任的固定IP地址。

方案2:提前导入主机密钥(更安全)

如果是生产环境或者需要长期自动化访问,建议提前把目标主机的密钥添加到当前用户的known_hosts文件里,这样SSH就不会再弹出验证提示:

先在终端执行这条命令(替换成你的实际IP):

ssh-keyscan -H ip_address >> ~/.ssh/known_hosts

执行完之后,再运行你的Python脚本,原来的ssh_string不需要做任何修改,SSH会自动通过密钥验证,既安全又能实现自动化。

另外补充一点:os.system执行到SSH隧道命令时会阻塞脚本运行(因为隧道会一直保持打开),如果需要让脚本继续执行其他操作,可以考虑把SSH命令放到后台运行(加&),但这样隧道可能会在脚本结束时被关闭,你可以结合nohup来让隧道持久化:

ssh_string = "nohup ssh -i pem_file_path -NTL 9007:169.254.76.1:9007 glue@ip_address > /dev/null 2>&1 &"

内容的提问来源于stack exchange,提问作者DBA108642

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:37:59