Как установить SSH-соединение через прокси-сервер с помощью Fabric?

Я пытаюсь установить соединение SSH между ПК с ОС Windows и сервером Linux (amazon ec2).

Я решил использовать API Fabric, реализованный с помощью python.

У меня есть Putty, установленный на ПК с Windows.

My fabfile script выглядит так:

import sys
from fabric.api import *


def testlive():
  print 'Test live ...'
  run("uptime")

env.use_ssh_config = False
env.host_string = "host.something.com"
env.user = "myuser"
env.keys_filename = "./private_openssh.key"
env.port = 22
env.gateway = "proxyhost:port"

testlive()

Я запускаю Fabric в том же каталоге с закрытым ключом.

Я могу войти на эту машину с помощью Putty.

Проблема: Я постоянно прошу ввести пароль для указанного пользователя.

Основываясь на других сообщениях (здесь и здесь), я уже пробовал:

  • передать в качестве списка ключевой файл в env.keys_filename
  • использовать имя пользователя @host_string
  • используйте env.host вместо env.host_string

Как правильно настроить Fabric для работы с прокси-сервером и файлом закрытого ключа ssh?

Ответ 1

API Fabric лучше всего избегать, слишком много ошибок и проблем (см. отслеживание проблем).

Вы можете делать то, что хотите в Python, со следующими параметрами:

from __future__ import print_function

from pssh import ParallelSSHClient
from pssh.utils import load_private_key

client = ParallelSSHClient(['host.something.com'],
                           pkey=load_private_key('private_openssh.key'),
                           proxy_host='proxyhost',
                           proxy_port=<proxy port number>,
                           user='myuser',
                           proxy_user='myuser')
output = client.run_command('uname')
for line in output['host.something.com'].stdout:
    print(line)

ParallelSSH доступен из pip как parallel-ssh.

Ответ 2

Следующее должно работать.

env.key_filename = "./private_openssh.key"

(обратите внимание на опечатку в вашей попытке)

Ответ 3

PuTTYgen - это то, что вы будете использовать для генерации вашего ключа SSH, а затем загрузите скопированный ключ SSH на портал управления областью - См. Joyant

Ответ 4

Вам нужно будет сгенерировать и аутентифицировать закрытый ключ, для этого вам понадобится PuTTYgen для генерации SSH-доступа с использованием ключа RSA с паролем, комментариями клавиш и соответствия ключевой фразе, вот пошаговая инструкция для руководства SSH Доступ с использованием аутентификации ключа RSA