Содержание
Аннотация
Часто бывает необходимо получить доступ к компьютеру удаленно.
Если пользователь отправляет логин и пароль в виде обычного текста,
они могут быть перехваченны и использованны злоумышеленником для того,
чтобы получить доступ к удаленной системе от именни этого пользователя.
Это откроет доступ нападавшему ко всем файлам пользователя, так же
может быть использован для попытки получения
root
привилегий или попытки
проникновения на другую систему. В прошлом для удаленных соединений
использовалась программа telnet, которая не шифрует передаваемый траффик и не
предпринимает ничего для предотвращения прослушивания. Есть и другие
незащищенные каналы связи, создаваемые, например, при использовании FTP
или других программ для копирования через сеть.
Комплект программ SSH обеспечивает необходимую защиту, шифруя передаваемый траффик, включая логин и пароль. При использовании SSH данные все же могут быть перехвачены, но без ключа, использующегося для шифрования, их невозможно будет расшифровать. Таким образом SSH обеспечивает безопасное соединение в небезопасной сети, такой как интернет. Комплект программ SSH доступен в openSUSE в пакете OpenSSH.
В openSUSE пакет OpenSSH установлен по умолчанию. Программы
ssh, scp, и sftp
предоставляют альтернативу telnet, rlogin,
rsh, rcp и ftp.
В конфигурации по умолчанию доступ к openSUSE возможен только с помощью
служебных программ из комплекта OpenSSH, и только если запущен sshd
и открыты соответствующие порты в брандмауэре.
Используя ssh, можно подключиться к удаленным системам и работать в
интерактивном режиме. Это заменяет и telnet и rlogin. Программа slogin является
всего лишь линком на ssh. Например, для того, чтобы залогиниться в системе
sun
, используйте команду
ssh sun
, после чего
надо будет ввести пароль, т.е. пройти аутентификацию в системе
sun
.
После успешной аутентификации можно использовать либо консоль, либо интерактивные приложения, такие как YaST. Если имя пользователся на локальной машине отличается от имени на удаленной, используйте команду ssh -l augustine sun или ssh augustine@sun.
Кроме того, ssh позволяет выполнять команды на удаленных системмах, используя
rsh. В следующем примере запускается команда uptime на
машине sun и создается директория с именем tmp
.
Вывод команды можно видеть на локальном терминале системы jupiter.
ssh otherplanet "uptime; mkdir tmp" Password: 1:21pm up 2:17, 9 users, load average: 0.15, 0.04, 0.02
Кавычки здесь необходимы, чтобы посылать обе инструкции в одной команде.
Вторая команда создает директорию tmp
в системе
sun, cразу после окончания работы uptime.
scp копирует файлы на удаленную машину. Это более безопасная
замена для rcp. Например
scp MyLetter.tex
sun: скопирует файл MyLetter.tex
из системы jupiter в sun. Если имя пользователей в системе jupiter отличается
от имени в системе sun, укажите его, используя такой формат:
username@host
. Ключ -l
имеет другое
значение для этой команды.
После того, как правильный пароль введен, scp начинает передачу данных и
показывает растущий ряд звездочек, имитируя процентное соотношение выполнения процесса.
Кроме того, программа показывает предполагаемое время до его завершения.
Если указан ключ -q
, программа не будет ничего выводить на терминал.
scp также поддерживает рекурсивное копирование. Команда
scp -r src/ sun:backup/ скопирует содержимое
всей директории src
, включая все поддиректории, в папку
backup
системы sun. Если эти поддиректории не
существуют, они будут созданны автоматически.
При использовании ключа -р
, scp сохранит дату последнего
изменения как у источника. Ключ -C
позволит сжать передаваеммые
данные. Это минимизирует объем передаваемых данных, но нагрузит процессор.
Для безопасной передачи данных, вместо программы scp, может использоваться sftp. Во время sftp-сессии доступны многие из команд, используемых при работе с ftp. Использование sftp может быть более лучшим выбором чем scp, особенно если не известны имена копируемых файлов.
Для работы с программами ssh и scp, в фоновом режиме должнен быть запущен
SSH-демон, который будет использовать порт 22 TCP/IP
.
При запуске в первый раз, демон генерирует три пары ключей. Каждая пара
стоит из секретного и открытого ключа.
Чтобы гарантировать безопасность соединения через SSH, доступ к файлу с
секретным ключем должен быть только у системного администратора. По умолчанию,
этот файл имеет именно такие права. Секретный ключ используется только
локальным SSH-демоном и не должен быть предоставлен кому-то ещё. Открытый
ключ (узнаваемый по расширению файла .pub
) отправляется
клиенту, запросившему соединение. Файл, в котором находится открытый ключ,
может прочитать любой пользователь системы.
Связь инициирует SSH-клиент. SSH-демон ожидает запроса от SSH-клиента для создания соединения. Первым шагом они обмениваются информацией идентификации, проверяя протокол и версию SSH, а так же уточняя номер порта, т.к. дочерние процессы, порожденные SSH-демоном, могут одновременно обслуживать несколько SSH-сессий.
OpenSSH для связи между SSH-сервером и SSH-клиентом поддерживает первую
и вторую версию протокола SSH. По умолчанию используется вторая версия.
Если Вы хотите использовать первую версию, используйте ключ
-1
.
При использовании версии 1, SSH-сервер посылает свой открытый ключ и так называемый "ключ сервера", которые генерируются раз в час. На основании этих ключей SSH-клиент генерирует ключ сессии, который в последствии он посылает SSH-серверу. SSH-клиент также говорит серверу какой метод шифрования использовать. Вторая версия протокола SSH не требуют ключа сервера. Обе стороны используют алгоритм Диффи-Хеллмана (Diffie-Hellman) для обмена ключами.
Секретный и серверный ключи необходимы для расшифровки ключа сессии и не
могут быть получены, при использовании лишь открытых ключей. Только при
соединении SSH-демон может расшифровать ключ сессии, используя свои секретные
ключи. Эта начальная фаза установки соедининения более детально будет показана
(включая отладочную информацию) при использовании ключа -v
.
Клиент сохраняет открытые host-ключи в фaйле
~/.ssh/known_hosts
, после первого соединения с удаленной
системой. Это предотвращает любые попытки "нападений посредине" внешними SSH
серверами, использующими поддельные имена или IP-адреса. Такие нападения будут
сразу же обнаружены по отличному ключу, которого нет в
~/.ssh/known_hosts
или неспособностью сервера расшифровать
ключ сессии из-за отсутсвия соответствующих секретных ключей.
Рекомендуестся сохранять секретные и открытые ключи, которые находятся в
/etc/ssh/
, на каком-нибудь безопасном внешнем носителе.
В этом случае эти ключи могут быть снова использованны, к примеру, после
переустановки системы.
Аутентификация в своей простейшей форме, как упоминалось выше, это просто ввод пароля. Цель SSH сосоит в том, чтобы предоставить пользователю безопасное программное обеспечение, которое так же просто в использовании. Поскольку при создании подразумевалась альтернатива rsh и rlogin, SSH так же предоставило очень простые методы аутентификации, подходящие для ежедневного использования. Достигается это посредством еще одной пары ключей, создаваемых пользователем. В составе openssh-пакета специально для этого есть вспомогательная программа ssh-keygen. После команд ssh-keygen -t rsa или ssh-keygen -t dsa, генерируется эта пара ключей.
Подтвердите использование установок по умолчанию и введите пароль. Пароль должен
содержать (рекомендованное количество для процедуры, описанной тут) от 10 до 30
символов. Не используйте простые или короткие слова или фразы. Подтвердите пароль
(введите его еще раз). После этого секретный и открытый ключи, в этом примере,
будут сохраненны в id_rsa
и id_rsa.pub
.
Используйте ssh-keygen -p -t rsa или
ssh-keygen -p -t dsa, чтобы изменить пароль. Скопируйте открытый ключ
(id_rsa.pub
в этом примере) на другую машину и сохраните его в
~/.ssh/authorized_keys
. При следующем соединении будет предложенно
идентифицировать cебя, т.е. подтвердить пароль еще раз. Если этого не произойдет,
проверьте расположение и содержимое этих файлов.
Эта процедура не так удобна, чем ввод пароля при каждом новом соединении. По
этой причине пакет openssh предоставляет другую программу,
ssh-agent, который сохраняет секретные ключи на время X-сессии. Все X-сессии
запускаются как дочерний процесс ssh-agent. Самый простой способ сделать это
- установить параметр yes
для переменной usessh
в начале файла .xsession
, выйти и зайти в систему снова,
используя, к примеру, KDM или GDM. Можно так же просто сделать
ssh-agent startx.
После этого Вы можете использовать ssh или scp как обычно. Если Вы создадите свой открытый ключ, как описанно выше, Вам не придется больше вводить свой пароль. Не забывайте о завершении X-сессии, а так же ее защите при помощи пароля, используя, например, xlock.
![]() | Права доступа к файлам при использовании host-аутентификации |
---|---|
При использовании host-аутентификации, файл
|
Помимо описанных выше возможностей, через SSH также можно работать с
удаленными X-приложениями. При использовании ssh
с ключем -X
, переменная DISPLAY
автоматически устанавливается на удаленной машине, и весь вывод
X-приложения экспортируется через SSH-соединение. Другими словами,
X-приложение запускается на удаленной системе, но работать с ней можно
локально, при этом передаваемые данные не могут быть перехвачены
злоумышленником.
При использовании ключа -A
, для механизма аутентификации ssh-agent
используется следующая машина. Таким образом, можно подключаться с различных
машин без необходимости вводить пароль. Этот механизм работает лишь в том
случае, если на них есть открытый ключ пользователя, от имени которого создается
соединение.
Оба механизма не используются по умолчанию, но могут быть в любое время включены.
Для этого отредактируйте системный конфигурационный файл
/etc/ssh/sshd_config
или пользовательский
~/.ssh/config
.
ssh также может быть использован для перенаправления TCP/IP соединения. В приведенном ниже примере SSH перенаправляет SMTP и POP3 порт:
ssh -L 25:sun:25 jupiter
С помощью этой команды, все соединения на 25 порт (SMTP) системы jupiter будут перенаправляться через зашифрованный канал на SMTP порт системы sun. Это особенно полезно для тех, кто использует SMTP серверы без SMTP-AUTH или POP-before-SMTP. Электронная почта, откуда бы она ни пришла, будет переданна для дальнейшей доставки «домашнему» почтовому серверу. Точно так же все POP3 запросы (порт 110) на jupiter могут быть перенаправленны на POP3 порт sun, при помощи следующей команды:
ssh -L 110:sun:110 jupiter
Обе команды должны быть выполненны с правами
root
,
так как соединение использует привилегированные порты. При использовании
электронной почты обычными пользователями будет использоваться SSH соединение.
Дополнительную информацию можно найти в man-руководствах для каждой из программ,
описанной выше, а также в документации проекта OpenSSH:
/usr/share/doc/packages/openssh
.
YaST-модуль, отвечающий за настройку SSHD, не устанавливается
по умолчанию. Для его установки запустите YaST, выберете
yast2-sshd
.
Для настройки sshd-сервера с помошью YaST запустите YaST и выберете
+ . Затем сделайте следующее:На вкладке
, в таблице , выберите порты, которые должен использовать SSHD. По умолчанию используется порт 22. Вы можете выбрать несколько портов. Чтобы добавить новый порт, нажмите кнопку , введите номер порта и нажмите кнопку . Для удаления порта, найдите его в таблице, нажмите кнопку и подтвердите удаление.На вкладке "Общие" находятся и другие настройки, поддерживаемые sshd-демоном. Для отключения переадресации TCP (TCP Forwarding), снимите флажок Раздел 13.7, «X, аутентификация и механизмы переадресации» для получения дополнительной информации о переадресации TCP.
. Отключение переадресации TCP не улучшает безопасность, если пользователи не имеют доступа к терминалу, так как они всегда могут установить свои собственные переадресации. См.Чтобы отключить переадресацию X, снимите флажок Раздел 13.7, «X, аутентификация и механизмы переадресации» для получения дополнительной информации о переадресации X.
. Если эта опция отключена, любые запросы переадресации X11 вперед будут приводить к ошибке. Однако пользователи всегда могут установить свою собственную переадресацию. См.Опция
определяет, должна ли связь между сервером и клиентам быть сжата.
Вкладка /etc/motd
при интерактивном режиме входа в систему.
Если Вы хотит отключить возможность входить в систему пользователю
root
, отключите
.
В
устанавливается максимальное количество попыток аутентификации за одно соединение. определяет, разрешенна ли аутентификация RSA. Этот параметр применяется только к первой версии протокола SSH. определяет, разрешеа ли аутентификация пользователя с помощью открытого ключа. Этот параметр используется только во второй версии протокола SSH.На вкладке
определяются версии протокола SSH, которые должны поддерживатся. Вы можете выбрать первую или вторую версию, а так же параллельную поддержку обоих SSH-протоколов.В
перечисленны все поддерживаемые алгоритмы шифрования. Вы можете удалить шифр, выбрав его в списке и нажав кнопку . Чтобы добавить шифр, выберите его из выпадающего меню и нажмите кнопку .Нажмите
для сохранения настроек.Страница проекта OpenSSH
ssh_config
man-страница о конфигурационных файлах OpenSSH.
sshd
man-страница о OpenSSH-демоне
scp
, man sftp
, man slogin
, man ssh
, man ssh-add
, man ssh-agent
, man ssh-copy-id
, man ssh-keyconvert
, man ssh-keygen
, man ssh-keyscan
man-страницы о программах копирования файлов (scp, sftp), login (slogin, ssh), и ключах.