UnixGo
Мастерство приходит только с практикой.

SSH и инфраструктура

Все основанные на ssh игры на OverTheWire работают в контейнерах Docker. Когда вы входите с помощью SSH в одну из игр, специально для вас создается свежий контейнер Docker. Никто другой не входит в ваш контейнер, и никакие файлы других игроков не лежат вокруг. Мы выбрали такую конфигурацию, чтобы предоставить каждому игроку чистую среду для экспериментов и обучения, которая автоматически очищается, когда вы выходите из системы.

Из-за такой установки все не так просто, как кажется. Возьмем, к примеру, SSH. Каждое SSH-соединение создает новую среду для работы. В большинстве случаев это работает хорошо. Однако есть случаи, когда это становится проблемой.

Рассмотрим, например, уровень, на котором вы должны дважды войти в один и тот же контейнер. Из-за того, как все устроено, дважды войдя в систему, вы получите доступ к разным контейнерам, каждый из которых имеет чистую рабочую среду и не может влиять друг на друга. Это не то, чего вы хотите.

К счастью, есть способы обойти это. Один из способов - использовать SSH с пробросом портов. Например:

ssh -l bandit0 -p 2220 -L 1234:localhost:22 bandit.labs.overthewire.org

С помощью этой команды вы подключитесь к игре bandit на порт 2220 с именем пользователя bandit0, и даете команду SSH-клиенту настроить проброс портов с порта 1234 на вашем локальном компьютере, на порт 22 на “localhost”, как видно из контейнера bandit. Это означает, что порт 1234 на вашем локальном компьютере будет перенаправлен на SSH-сервер внутри одного контейнера bandit. который был создан для вас. Если вы несколько раз подключаетесь к порту 1234 на “localhost” на своем компьютере, вы каждый раз оказываетесь в одном и том же контейнере.

Пока вы держите открытым начальное SSH-соединение, которое перенаправляет порт, вы сможете входить в один и тот же контейнер. Помните, что контейнер станет недоступным, как только вы закроете это соединение!

Также смотрите страницу справки о сохранении данных пользователя.

SSH ключи

Вы можете столкнуться с предупреждением SSH о новых ключах SSH для игр на основе оболочки, например, этой:

The authenticity of host '[bandit.labs.overthewire.org]:2220 ([176.9.9.172]:2220)' can't be established.
ECDSA key fingerprint is SHA256:SCySwNrZFEHArEX1cAlnnaJ5gz2O8VEigY9X80nFWUU.
Are you sure you want to continue connecting (yes/no)?

Вот ожидаемый результат от ssh-keyscan для bandit.labs.overthewire.org. Эти ключи одинаковы для всех игр на основе оболочки, а не только для bandit.

$ ssh-keyscan -p 2220 -T 10 bandit.labs.overthewire.org

# bandit.labs.overthewire.org:2220 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
[bandit.labs.overthewire.org]:2220 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDy5O/3KJT8z1aAC/hAuphG3gha/xVowSwc/066SVrSewHY4ETsCr3EdiClK+uw1OQYSBxHa6jPjEpKIeIMili5p6E4aEiiC3uYFkRCOQUN0bfYKgbHs5n1vEpua0UztLSf3AFGF2Lw2VEYd2Fuv1bPj2bYobpLTfLqjVhu8PWtQbgWBbECZBE7I7hSwvQzAnuaxJg/c2VtjD5vl3EOX6VlrnuDvYtM0q8dMrftBC9nTOzWc1RP8POVkcFdva+DETcQCeuG0rUPRZCzRpIhvxNf6BNkxeEHjkaIeedBPvDLdc9DLvdouzvw6H8EoU0pDJXsHraPWnuUEgwIAuD4auIP
# bandit.labs.overthewire.org:2220 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
[bandit.labs.overthewire.org]:2220 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNjKNpXfKljXFVLM9p/6qZqUg8BzGs5wFFQWktFD5H9xXXcnH5yzQqtp7MpTPxBVk+1TRxmb0s5Ej3VewH5GK+E=
# bandit.labs.overthewire.org:2220 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
[bandit.labs.overthewire.org]:2220 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBbK+bRnQZW9014ZUy5kubl5hwpgb+2r6Xsyx0xP018o