如何从 Fabric 运行 命令中启动 SSH 连接
How to initiate SSH connection from within a Fabric run command
我有一个远程服务器,比如说 1.2.3.4
,它是 运行 正在为 SSHD 服务的 docker 容器映射到 docker 主机上的端口 49222,所以手动连接到它我会这样做:
workstation$ ssh 1.2.3.4 -t "ssh root@localhost -p 49222"
并到达 docker 容器 SSH 命令提示符 root@f383b4f71eeb:~#
如果我 运行 触发 run('ssh root@localhost -p 49222')
的 fabric 命令,那么系统会要求我输入 root 密码。但是它不接受我知道是正确的根密码,所以我怀疑密码提示来自主机而不是 docker 容器。
我在 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 的每一行来说相当烦人.
我有一个远程服务器,比如说 1.2.3.4
,它是 运行 正在为 SSHD 服务的 docker 容器映射到 docker 主机上的端口 49222,所以手动连接到它我会这样做:
workstation$ ssh 1.2.3.4 -t "ssh root@localhost -p 49222"
并到达 docker 容器 SSH 命令提示符 root@f383b4f71eeb:~#
如果我 运行 触发 run('ssh root@localhost -p 49222')
的 fabric 命令,那么系统会要求我输入 root 密码。但是它不接受我知道是正确的根密码,所以我怀疑密码提示来自主机而不是 docker 容器。
我在 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 的每一行来说相当烦人.