【问题标题】:How to initiate SSH connection from within a Fabric run command如何从 Fabric 运行命令中启动 SSH 连接
【发布时间】:2015-06-26 23:03:20
【问题描述】:

我有一个远程服务器,比如1.2.3.4,它正在运行一个 docker 容器,该容器提供映射到 docker 主机上端口 49222 的 SSHD,所以我会手动连接到它:

workstation$ ssh 1.2.3.4 -t "ssh root@localhost -p 49222" 并到达 docker 容器 SSH 命令提示符root@f383b4f71eeb:~#

如果我运行一个触发 run('ssh root@localhost -p 49222') 的结构命令,那么我会被要求输入 root 密码。但是它不接受我知道正确的root密码,所以我怀疑密码提示来自主机而不是docker容器。

【问题讨论】:

    标签: python ssh fabric


    【解决方案1】:

    我在fabfile.py 中定义了以下任务:

    @task
    def ssh():
        env.forward_agent = True
        run('ssh root@localhost -p 49222')
        with settings(output_prefix=False, forward_agent=True):
            run('ssh root@localhost -p 49222')
    

    在远程服务器sshd_config 我需要设置:

    AllowAgentForwarding yes
    

    此外,output_prefix=False 可用于删除 fabric 添加到每一行开头的 [hostname] run: 前缀,这对于远程 shell 的每一行来说都是相当烦人的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2021-04-10
      相关资源
      最近更新 更多