17.2. Настройка OpenSSH

Проблема

Вы хотите установить связь между локальной рабочей станцией и удалённым компьютером. Подключение должно быть защищённым; информация не должна стать доступной для злоумышленников (их не видно, но они существуют — даже если вы не страдаете паранойей). Итак, требуется настроить OpenSSH.

Решение

Установите OpenSSH на обоих компьютерах. Чтобы удалённый хост принимал подключения, на нём должен работать демон sshd. Скопируйте открытый ключ удалённого хоста в файл ~/.ssh/known_hosts на локальном компьютере — и можете приступать к работе.

# /etc/init.d/sshd start
# /etc/init.d/sshd stop

В Debian демон запускается следующим образом:

# /etc/init.d/ssh start
# /etc/init.d/ssh stop

Всегда проверяйте имена файлов init, они могут изменяться в зависимости от дистрибутива.

Копирование открытого ключа удалённого хоста в локальный файл ~/.ssh/known_hosts сводится к простой попытке подключения к удалённому хосту:

carla@windbag carla$ ssh stinkpad
The authenticity of host 'stinkpad (192.168.1.100)' can't be established.
RSA key fingerprint is a2:c6:70:3e:73:00:b3:ed:90:bl:9a:bc:e7:d5:32:ba.
Are you sure you want to continue connecting (yes/no)?

Ответьте yes, и на экране появится сообщение:

Warning: Permanently added 'stinkpad,192.168.1.100' (RSA) to the list of known hosts.
carla@stinkpad's password:
Linux stinkpad 2.4.21 #1 Sun Aug 3 20:15:59 PDT 2003 i686 GNU/Linux
Libranet GNU/Linux
Last Login: Sat June 3 22:16:24 2004 from :0.0
carla@stinkpad:~$

Подключившись к удалённому компьютеру, вы сможете работать с ним так же, как если бы вы сидели за ним. Чтобы закрыть сеанс удалённого подключения, введите команду exit.

Комментарий

Простая команда ssh <host> создаёт подключение к другому хосту локальной сети с использованием данных текущей учётной записи. Чтобы подключиться с данными другого пользователя, укажите параметр -l:

carla@windbag ~$ ssh -l wilma stinkpad

При подключении SSH по Интернету следует указывать полное доменное имя:

carla@windbag ~$ ssh stinkpad.test.net

Ключи хостов хранятся в каталоге /etc/ssh и используются для проверки личности удалённого хоста. Для подключения пользователю потребуется только копия открытого ключа в его файле ~/.ssh/known_hosts и учётная запись, под которой осуществляется вход. В некоторых дистрибутивах Linux при установке OpenSSH создаются две пары ключей, RSA и DSA:

$ ls /etc/ssh
ssh_host_dsa_key ssh_host_dsa_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub

Если система не создаёт ключи или вы захотите изменить их, обратитесь к рецепту 17.3 — в нём рассказано, как сгенерировать новые ключи хостов.

Пример открытого ключа RSA:

$ cat ssh_host_rsa_key.pub
ssh-rsa AAAAB3NzaClyc2EAAAABIwAAAIEA5pSqNmtqRzK2JaLr8qkIQ41nBDLI2JRJ6gRBmwg9gwK3S8xX
nMUHIsu8wh5Sloei8hs47x2I9cpNpxHfjlwQWwqP61VyelDfD+y+WIz0UgzUXN5IrqYZ70EdQ4Xn
++J1 lkmFG6L16KySb0700XonlC09rNxisHL5GC0qil+qM= root@windbag

Сам ключ должен быть одной длинной, неразрывной строкой — он не должен содержать внутренних разрывов. Скопируйте его на съёмный диск, перенесите в локальный файл ~/.ssh/known_hosts и измените следующим образом:

windbag.test.net,192.168.1.6 ssh-rsa AAAAB3NzaClyc2EAAAABIwAMIEA5pSqNmtqRzK2JaLr8qkIQ41nBDLI2JRJ6gRBmwg9gwK3S8xX
nMUHIsu8wh5Sloei8hs47x2I9cpNpxHfjlwQWwqP61VyelDfD+y+WIz0UgzUXN5IrqYZ70EdQ4Xn
++J1 lkmFG6Ll6KySb0700XonlC09rNxisHL5GC0qil+qM=

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

См. также

ssh(1)