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