Как инициировать соединение SSH из команды Fabric?

У меня есть удаленный сервер, скажем 1.2.3.4который работает с док-контейнером, который обслуживает SSHD, сопоставленный с портом 49222 на хосте докера, поэтому для подключения к нему вручную я бы сделал:

workstation$ ssh 1.2.3.4 -t "ssh root@localhost -p 49222" и прибыть в командную строку SSH контейнера Docker root@f383b4f71eeb:~#

Если я запускаю команду ткани, которая запускает run('ssh root@localhost -p 49222') тогда меня вместо этого спрашивают пароль root. Однако он не принимает пароль root, который, как я знаю, является правильным, поэтому я подозреваю, что запрос пароля происходит от хоста, а не от контейнера докера.

1 ответ

Решение

Я определил следующую задачу в моем 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: префикс, который ткань добавляет к началу каждой строки, что довольно раздражает для каждой строки удаленной оболочки.

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