Fabric:在 env.gateway 上使用 ssh_config 设置

Fabric:在 env.gateway 上使用 ssh_config 设置

我有一个相对标准的 AWS 设置,如下所示:

[ App server ] \
[ App server ] -- [ Dev gateway ]
[ App server ] /

其中服务器仅可通过网关的 IP 超过 22 个地区访问,并且网关向全世界开放。

网关的访问由公钥控制,任何公钥在网关用户(服务器和网关的用户名相同)上的人都可以无需密码进行 ssh 访问。

最后,网关用户将服务器的.pem文件作为其文件.ssh/id_rsa,因此网关上的任何用户都可以通过 直接 ssh 进入ssh [private ip address]

话虽如此:我想使用在开发人员的机器上本地运行的 Fabric 来打开与给定应用服务器的连接(最终是为了运行 Django shell)。但我甚至无法建立连接,更不用说让 shell 运行了。以下是我所拥有的:

env.user = 'user_name'

...

@task
def remote_shell():
     run('echo on gateway')
     env.gateway = 'dev_gateway'
     env.host_string = 'app_server_internal_ip'
     env.key_filename = '~/.ssh/id_rsa'
     env.use_ssh_config = True
     run('echo hello')

在我看来,这已经是小题大做了,只是把我能想到的每一个指令都放在那里,但无论我选择上述选项的哪种组合,我都会得到相同的输出:

[dev_gateway] Executing task 'remote_shell'
[dev_gateway] run: echo on gateway
[dev_gateway] out: on gateway
[dev_gateway] out:

[app_server_internal_ip] run: echo hello
[app_server_internal_ip] Passphrase for private key:
[app_server_internal_ip] Login password for 'user_name':

显然有些事情不对劲,因为用户无需输入密码即可通过 ssh 进入网关和应用服务器。我做错了什么?

相关内容