【问题标题】:How to do multihop ssh with fabric如何使用织物进行多跳 ssh
【发布时间】:2014-01-06 16:11:05
【问题描述】:

我有一个 nat,它有各种服务器 所以从我的本地服务器我想去 nat 然后从 nat 我必须 ssh 到其他机器

Local-->NAT(abcuser@publicIP with key 1)-->server1(xyzuser@localIP with key 2) nat 有不同的 ssh 密钥 每个服务器都有不同的 ssh 密钥 我如何使用结构完成这种类型的多跳 ssh 我尝试使用 env.roledefs 功能,但它似乎没有工作 我也不确定如何定义两个 ssh 密钥。我知道我们可以使用 env.key_filename 定义一个密钥列表,但问题是它会检查每个服务器的每个密钥吗?我怎样才能更具体并将密钥与一个服务器匹配只有

我尝试使用本地机器上的命令 fab deploy -g 'ec2-user@54.251.151.39' -i '/home/aman/Downloads/aws_oms.pem' 我的脚本是

from __future__ import with_statement
from fabric.api import local, run, cd, env, execute
env.hosts=['ubuntu@10.0.0.77']
env.key_filename=['/home/ec2-user/varnish_cache.pem']
def deploy():
    run("uname -a")

【问题讨论】:

    标签: python ssh fabric ssh-tunnel


    【解决方案1】:

    这是可能的。通过网关跳点10.0.0.1 双跳到10.0.0.2(和列表文件)。基本上,您只需使用 gateway 参数嵌套连接即可。

    # coding: utf-8
    
    from fabric import Connection
    
    path = '/'
    conn1 = Connection(host='user1@10.0.0.1', connect_kwargs={'password': '***'})
    conn2 = Connection(host='user2@10.0.0.2', connect_kwargs={'password': '***'}, gateway=conn1)
    result = conn2.run(f'''cd {path} && ls -al''', hide=True)
    conn2.close()
    conn1.close()
    msg = "Ran {0.command!r} on {0.connection.host}, got stdout:\n{0.stdout}"
    print(msg.format(result))
    

    请记住手动运行一次 SSH 连接以将服务器相互介绍!

    通过安装

    pip3 install --upgrade fabric
    pip3 install cryptography==2.4.2  # optional to hide some annoying warnings
    

    http://docs.fabfile.org/en/latest/concepts/networking.html

    Python 3.6+。

    【讨论】:

      【解决方案2】:

      为了通过中间服务器连接到远程主机,您可以使用--gateway 命令行选项:

      http://docs.fabfile.org/en/latest/usage/fab.html#cmdoption-g

      或者,或者,在您的 fabfile 中设置 env.gateway 变量:

      http://docs.fabfile.org/en/latest/usage/env.html#gateway

      更多详细信息,请参见:

      http://docs.fabfile.org/en/stable/concepts/networking.html#ssh-gateways

      【讨论】:

      • thnx 它成功了,但我想知道如果我之间还有一跳,我会怎么做
      • @ronnix 链接失效,请修复
      • 修复了链接
      • 问题是如何用不止一跳来做到这一点?文档从不谈论这个。
      猜你喜欢
      • 2011-12-05
      • 2021-12-05
      • 2018-07-23
      • 2019-02-12
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多