Глава 17. Удалённый доступ
17.1. Введение
Удалённый доступ по праву считается одной из самых замечательных возможностей Linux. Существует много способов организации удалённого доступа. В незащищённых сетях не следует полагаться на старые механизмы telnet или X, поскольку информация учётной записи и данные пересылаются в виде простого текста. Оптимальным выбором станет OpenSSH (Secure SHell) — семейство из нескольких программ защищённой пересылки данных: scp (Secure CoPy), ssh (Secure SHell) и sftp (Secure File Transfer Protocol). Программа ssh является основным инструментом удалённого администрирования; с её помощью можно подключиться к удалённому компьютеру и работать с ним так, словно вы физически работаете за этим компьютером. Информация учётных записей и данные шифруются. Кроме того, ssh обнаруживает модификацию пакетов во время пересылки. Злоумышленники могут сколько угодно перехватывать пакеты и вносить в них изменения — они этим ничего не добьются.
В действительности SSH не является командным процессором (shell); это протокол. Существует две несовместимые версии этого протокола, SSH-1 и SSH-2. OpenSSH поддерживает обе версии. В этой главе рассматривается версия SSH-2, так как в работе следует использовать более современную версию OpenSSH.
ПРИМЕЧАНИЕ
Терминология SSH может сбить с толку непосвящённых. SSH (прописными буквами) — название протокола, тогда как ssh, scp и т. д. (строчными буквами) — программы, использующие SSH. OpenSSH — реализация SSH, используемая в этой главе.
Работать с SSH несложно. Если ранее вам доводилось пользоваться rsh, rlogin или rep, синтаксис командной строки почти не изменился. На всех компьютерах, к которым должен предоставляться удалённый доступ, должен работать демон OpenSSH sshd, а на всех удалённых компьютерах потребуются учётные записи. Входить можно под любой учётной записью; главное, чтобы вы знали имя и пароль.
OpenSSH проводит аутентификацию с использованием пар из открытого и закрытого ключа. Закрытые ключи тщательно охраняются и никогда, ни при каких условиях не передаются другим пользователям. Всегда используйте сильные пароли для шифрования и защиты закрытых ключей. По-настоящему сильный пароль состоит из нескольких слов и содержит буквы и цифры типа «t4is is mai 733t s3kkrit p4ssphr4se». Как обычно, следует выдерживать баланс между надёжностью и удобством, потому что пароль придётся часто вводить.
Открытые ключи передаются удалённым клиентам и серверам SSH. Например, при использовании аутентификации с ключом хоста открытый ключ сервера хранится на клиентских компьютерах, которым разрешён доступ к серверу. Все сеансы SSH начинаются с аутентификации. После того как открытый ключ удалённого хоста будет скопирован в локальный каталог ~/.ssh, вы сможете подключиться к удалённому хосту в качестве любого пользователя, используя данные его учётной записи.
Если вы хотите, чтобы при аутентификации использовались ключи SSH (вместо учётных данных пользователя), сгенерируйте собственную пару из открытого и закрытого ключа и скопируйте открытый ключ на все удалённые хосты, к которым вы собираетесь подключаться. Чтобы схема заработала, достаточно выполнить пару дополнительных шагов, описанных в этой главе. Такой вид аутентификации называется аутентификацией с открытым ключом.
Если вы собираетесь подключаться к многим удалённым компьютерам, управление входными данными начинает создавать проблемы. Использование одного и того же открытого ключа и пароля создаёт потенциальную угрозу для безопасности системы, но и запомнить слишком много имён и паролей тоже нелегко. OpenSSH решает эту проблему за счёт использования аутентификации с открытым ключом, программ ssh-agent и keychain, позволяющих проводить защищённую аутентификацию без пароля.