如何从Fabric运行命令中启动SSH连接

时间:2015-05-19 12:45:04

标签: python ssh fabric

我有一个远程服务器,比如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容器。

1 个答案:

答案 0 :(得分:0)

我在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对于删除结构添加到每行开头的[hostname] run:前缀很有用,这对于远程shell的每一行都相当烦人。