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

Проблема
Вы хотите установить связь между локальной рабочей станцией и удаленным ком пьютером. Подключение должно быть защищенным; информация не должна стать
доступной для злоумышленников (их не видно, но они существуют — даже если
вы не страдаете паранойей). Итак, требуется настроить OpenSSH.
Решение
Установите OpenSSH на обоих компьютерах. Чтобы удаленный хост принимал
подключения, на нем должен работать демон sshd. Скопируйте открытый ключ
удаленного хоста в файл ~/.ssh/known_hosts на локальном компьютере — и може те приступать к работе.
Запуск sshd в большинстве систем на базе rpm осуществляется следующим об разом:
# /etc/init.d/sshd start
# /etc/init.d/sshd stop
В Debian демон запускается несколько иначе:
# /etc/init.d/ssh start
# /etc/init.d/ssh stop
Всегда проверяйте имена файлов init, они могут изменяться в зависимости от
дистрибутива.
Копирование открытого ключа удаленного хоста в локальный файл ~/.ssh/
knownjiosts сводится к простой попытке подключения к удаленному хосту.
carla@windbag carlaJ 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 l i s t of known hosts.
car1a@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
car1a@stinkpad:~$
Подключившись к удаленному компьютеру, вы сможете работать с ним точно
так же, как если бы вы сидели за ним (о том, как запустить удаленный сеанс X,
рассказано в разделе 17.11). Чтобы закрыть сеанс удаленного подключения, вве дите команду exit.
Комментарий
Простая команда ssh <xocm> создает подключение к другому хосту локальной
сети с использованием данных текущей учетной записи. Чтобы подключиться
с данными другого пользователя, укажите параметр -I:
carla@windbag -$ ssh -1 wilmaf stinkpad
При подключении SSH по Интернету следует указывать полное доменное имя:
carla@windbag ~$ ssh stinkpad.test.net
Установление исходного подключения и копирование ключа RSA с хоста яв ляется самой рискованной частью создания SSH. Если злоумышленнику удастся
вмешаться в работу сервера имен, он может перехватить сеанс SSH и похитить
данные вашей учетной записи. Впрочем, риск относительно невелик, и перед пер вым подключением можно проверить IP-адрес удаленного хоста. Чтобы закрыть
эту брешь в системе безопасности, заранее вручную скопируйте открытый ключ
хоста в локальный файл ~/.ssh/known_hosts. При этом файл придется слегка под редактировать; далее приводятся примеры.
Ключи хостов хранятся в каталоге /etc/ssh и используются для проверки «лич ности» удаленного хоста. Для подключения пользователю потребуется только
копия открытого ключа в его файле ~/.ssh/known_hosts и учетная запись, под ко торой осуществляется вход в систему. В некоторых дистрибутивах Linux при ус тановке OpenSSH создаются две пары ключей, RSA и DSA:
$ Is /etc/ssh
ssh_host_dsa_key
ssh_host_dsa_key.pub
sshhostrsakey
ssh_host_rsa_key.pub
Если система не создает ключи или вы захотите изменить их, обратитесь к ре цепту 17.3 — в нем рассказано, как сгенерировать новые ключи хостов.
Открытый ключ RSA выглядит примерно так:
$ cat ssh_host_rsa_key.pub
ssh-rsa
AAAAB3NzaClyc2EAAAABIwAAAIEA5pSqNmtqRzK2JaLr8qkIQ41nBDLI2JRJ6gRBmwg9gwK3S8xX
nMUHIsu8wh5Sloei8hs47x2I9cpNpxHfjlwQWwqP61VyelDfD+y+WIz0UgzUXN5IrqYZ70EdQ4Xn
++J1 lkmFG6L16KySb0700XonlC09rNxisHL5GC0qil+qM= rootPwindbag
Сам ключ должен быть одной длинной, неразрывной строкой — он не должен
содержать внутренних разрывов. Скопируйте его на съемный диск, перенесите
в локальный файл ~/.ssh/known_hosts и измените следующим образом:
windbag.test.net,192.168.1.6 ssh-rsa
AAAAB3NzaClyc2EAAAABIwAMIEA5pSqNmtqRzK2JaLr8qkIQ41nBDLI2JRJ6gRBmwg9gwK3S8xX
nMUHIsu8wh5Sloei8hs47x2I9cpNpxHfjlwQWwqP61VyelDfD+y+WIz0UgzUXN5IrqYZ70EdQ4Xn
++J1 lkmFG6Ll6KySb0700XonlC09rNxisHL5GC0qil+qM=
Имя хоста и IP-адрес добавляются в начало строки, а завершающее имя хоста
удаляется.
Открытые ключи доступны для всех, но закрытые ключи должны читаться толь ко владельцем ключа.
См. также
ssh(l).