Эмулировать SSH сервер для тестирования - PullRequest
9 голосов
/ 06 июля 2010

Мне нужно написать тест для сценария развертывания, который загружает файлы через SSH, но я бы хотел, чтобы он не зависел от конфигурации внешних серверов.Вот как я это вижу:

  1. Создание 2 демонов SSH без аутентификации на разных портах интерфейса обратной связи.
  2. Запуск сценария развертывания на этих двух портах

Единственный вопрос - как запустить эти фиктивные демоны SSH.

Я использую Python и Fabric.

Ответы [ 3 ]

6 голосов
/ 06 июля 2010

Если вам нужен полный контроль над действиями сервера (например, для того, чтобы смоделировать различные проблемные условия и, таким образом, провести действительно тщательное тестирование), я рекомендую витая : как показано в этой статье, это действительно упрощаетНастройте свой собственный SSH-сервер.

Если вы предпочитаете использовать существующий ssh-сервер, выберите его из списка здесь (или используйте тот, который поставляется с вашей системой, если таковой имеется).или, может быть, sshwindows , если вы работаете в windows) и запустите его с подпроцессом из Python, как часть запуска ваших тестов.

1 голос
/ 06 июля 2010

Переопределение демона SSH не является тривиальным.

Если ваша единственная проблема в том, что вы не хотите, чтобы они зависели от существующих конфигураций, вы можете запустить новый sshd , указав -fопределенную конфигурацию и -p для запуска на заданном порту.

Вы можете использовать os.system для выполнения вызовов в оболочку:

os.system('sshd -f myconfig -p 22022')
0 голосов
/ 17 октября 2018

Другой вариант - запустить докеризованный контейнер с запущенной службой sshd. Вы можете использовать изображение докера, например:

Я использовал это для тестирования сценария развертывания (созданного поверх структуры).

Вот как вы его используете.

Потяните изображение.

➜ docker pull kabirbaidhya/fakeserver

Установка авторизованных ключей для сервера.

➜ cat ~/.ssh/id_rsa.pub > /path/to/authorized_keys

Запустите фальшивый сервер.

➜ docker run -d -p 2222:22 \
             -v "/path/to/authorized_keys:/etc/authorized_keys/tester" \
             -e SSH_USERS="tester:1001:1001" \
             --name=fakeserver kabirbaidhya/fakeserver

Теперь вы можете использовать fakeserver из любого клиента ssh. Например:

➜ ssh tester@localhost -p 2222
➜ ssh tester@localhost -p 2222 "echo 'Hello World'"

Если это работает, вы можете использовать любые ssh-клиенты или скрипты поверх paramiko или fabric для тестирования на этом фиктивном сервере.

Надеюсь, это поможет.

...