Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过结构传递SSH选项?_Python_Ssh_Automation_Fabric - Fatal编程技术网

Python 如何通过结构传递SSH选项?

Python 如何通过结构传递SSH选项?,python,ssh,automation,fabric,Python,Ssh,Automation,Fabric,我们正在努力提高一些服务器进程的自动化程度;我们使用布料。我预计必须管理多个主机,这意味着必须对以前未使用SSH的服务器进行SSH连接。如果发生这种情况,SSH总是要求验证连接,这将中断自动化 在相同的过程中,我已经解决了这个问题,在SSH命令上使用了-o strichostkeychecking=no选项,我使用SSH命令将代码与rsync同步,但我还需要在使用Fabric的调用中使用它 有没有办法将特定于ssh的选项传递给Fabric,特别是我上面提到的选项?简单的回答是: 对于新主机,不需

我们正在努力提高一些服务器进程的自动化程度;我们使用布料。我预计必须管理多个主机,这意味着必须对以前未使用SSH的服务器进行SSH连接。如果发生这种情况,SSH总是要求验证连接,这将中断自动化

在相同的过程中,我已经解决了这个问题,在SSH命令上使用了
-o strichostkeychecking=no
选项,我使用SSH命令将代码与
rsync
同步,但我还需要在使用Fabric的调用中使用它

有没有办法将特定于ssh的选项传递给Fabric,特别是我上面提到的选项?

简单的回答是:

  • 对于新主机,不需要任何东西<代码>环境拒绝\u未知\u主机默认为
    False
  • 对于密钥已更改的已知主机,
    env.disable_known_hosts=True
    将决定继续连接到已更改的主机
  • 阅读旧文档:

    paramiko库能够加载您已知的_hosts文件, 然后将其连接到的任何主机与该映射进行比较。 设置可用于确定未知主机发生故障时发生的情况 (在已知_主机中找不到其用户名或IP的主机):

    • 拒绝:主机密钥被拒绝且未建立连接。这将导致Python异常,该异常将终止Fabric会话,并显示主机未知的消息
    • 添加:新的主机密钥被添加到内存中已知主机的列表中,连接完成,一切正常继续。请注意,这不会修改磁盘上已知的\u hosts文件
    • 问:尚未在结构级别实现,这是一个paramiko库选项,它会提示用户未知密钥以及是否接受该密钥
    如上所述,是拒绝还是添加主机在结构中通过 env.reject_unknown_hosts选项,对于 为了方便。我们认为这是一个有效的权衡 方便和安全;任何有其他想法的人都可以轻松修改 将模块级别的FAB文件设置为env.reject_unknown_hosts=True

    已更改密钥的已知主机 SSH的密钥/指纹跟踪的要点是 可以检测中间人攻击:如果攻击者重定向 您的SSH通信量会传输到他控制下的计算机,并假装 您的原始目标服务器,主机密钥将不匹配。因此 SSH(及其Python实现)的默认行为是 当主机以前记录在中时,立即中止连接 已知的主机突然开始向我们发送不同的主机密钥

    在某些边缘情况下,如某些EC2部署,您可能需要 忽略这个潜在的问题。我们的SSH层,在撰写本文时, 不能让我们控制这种行为,但我们可以回避 如果主机列表 被比较是空的,那么就没有问题了。设置 env.disable_known_hosts在需要此行为时为True;它是 默认情况下为False,以保留默认SSH行为

    警告:启用env.disable\u已知\u主机将使您无法访问 中间人攻击!请小心使用