Fabric: Использование настроек ssh_config на env.gateway

У меня есть относительно стандартная установка AWS, которая выглядит так:

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

Где серверы доступны только через 22 с IP-адреса шлюза, и шлюз открыт для мира.

Доступ к шлюзу контролируется открытым ключом, и любой, чей открытый ключ находится у пользователя шлюза (то же имя пользователя для серверов и шлюза) может войти в систему без пароля.

Наконец, у пользователя шлюза есть серверы .pem файл как его .ssh/id_rsaТаким образом, любой пользователь на шлюзе может напрямую войти в ssh ssh [private ip address],

Тем не менее, я хотел бы использовать Fabric, работающую локально на компьютере разработчика, чтобы открыть соединение с данным сервером приложений (в конечном счете, для запуска оболочки Django). Но я не могу даже установить соединение, не говоря уже о запуске оболочки. Вот что у меня есть:

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':

Очевидно, что что-то не выстраивается, поскольку пользователь может подключиться как к шлюзу, так и к серверу приложений, не вводя ни фразу-пароль, ни пароль. Что я делаю неправильно?

0 ответов

Другие вопросы по тегам