Предоставил Chern Lee.
OpenSSH это набор сетевых инструментов, используемых для
защищенного доступа к удаленным компьютерам. Он может быть использован в качестве
непосредственной замены rlogin, rsh,
rcp и telnet. Кроме того, любые другие
TCP/IP соединения могут быть безопасно тунеллированы/перенаправлены через SSH. OpenSSH шифрует весь трафик, эффективно предотвращая кражу
данных, перехват соединения и другие сетевые атаки.
OpenSSH поддерживается проектом OpenBSD, он основан на SSH
v1.2.12 со всеми последними исправлениями и обновлениями, совместим с протоколами SSH
версий 1 и 2. OpenSSH включен в базовую систему начиная с
FreeBSD 4.0.
Обычно при использовании telnet(1) или rlogin(1) данные
пересылаются по сети в незашифрованной форме. Перехватчик пакетов в любой точке сети
между клиентом и сервером может похитить информацию о пользователе/пароле или данные,
передаваемые через соединение. Для предотвращения этого OpenSSH предлагает различные методы шифрования.
Убедитесь, что добавили в файл rc.conf следующую строку:
sshd_enable="YES"
При следующей загрузке системы запущен sshd(8), даемон для OpenSSH. Вы можете также запустить sshd непосредственно, набрав в командной строке sshd.
Утилита ssh(1) работает
подобно rlogin(1).
# ssh user@example.com
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes
Host 'example.com' added to the list of known hosts.
user@example.com's password: *******
Вход продолжится так же, как если бы сессия была инициирована с использованием rlogin или telnet. SSH использует систему
опознавательных ключей для проверки подлинности сервера при подключении клиента.
Пользователю предлагается yes только при первом подключении.
Дальнейшие попытки входа предваряются проверкой сохраненного ключа сервера. SSH клиент
сообщит вам, если сохраненный ключ будет отличаться от только что полученного. Ключи
серверов сохраняются в ~/.ssh/known_hosts, или в ~/.ssh/known_hosts2 для SSH v2.
По умолчанию, сервер OpenSSH настроен для приема соединений
SSH v1 и SSH v2. Клиент может выбирать между этими двумя протоколами. Версия 2 безопаснее
своего предшественника.
Команде ssh(1) можно указать
использование определенной версии протокола, запустив ее с параметром -1 или -2 для версии 1 или 2
соответственно.
Команда scp(1) работает
подобно rcp(1); она копирует
файл с удаленного компьютера, но делает это безопасным способом.
# scp user@example.com:/COPYRIGHT COPYRIGHT
user@example.com's password: *******
COPYRIGHT 100% |*****************************| 4735
00:00
#
Поскольку в предыдущем примере ключ сервера уже был сохранен, в этом примере он
проверяется при использовании scp(1).
Параметры, передаваемые scp(1), похожи на
параметры cp(1), с файлом или
файлами в качестве первого аргумента и приемником копирования во втором. Поскольку файлы
файлы передаются по сети через SSH, один или более аргументов принимают форму user@host:<path_to_remote_file>.
Системные файлы настройки для даемона и клиента OpenSSH
расположены в каталоге /etc/ssh.
Файл ssh_config используется для настройки клиента, а sshd_config для даемона.
Кроме того, параметры sshd_program (по умолчанию /usr/sbin/sshd), и sshd_flags rc.conf дают дополнительные возможности настройки.
Вместо использования паролей, с помощью ssh-keygen(1)
пользователи могут аутентифицироваться ключами RSA:
% ssh-keygen -t rsa1
Initializing random number generator...
Generating p: .++ (distance 66)
Generating q: ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...
ssh-keygen(1) создаст
пару публичного и приватного ключей, используемых для аутентификации. Приватный ключ
сохраняется в ~/.ssh/identity, а публичный в ~/.ssh/identity.pub. Для включения аутентификации по ключам
публичный ключ должен быть помещен в ~/.ssh/authorized_keys на
удаленном компьютере.
Это позволяет соединяться с удаленным компьютером с помощью RSA аутентификации вместо
паролей.
Замечание: Параметр -t rsa1 приведет к созданию RSA
ключей, используемых SSH протоколом версии 1. Если вы хотите использовать RSA ключи с SSH
протоколом версии 2, используйте команду ssh-keygen -t rsa.
Если при генерации ключей был использован пароль, каждый раз для при использовании
приватного ключа он будет запрашиваться у пользователя.
DSA ключ для SSH протокола версии 2 может быть создан в тех же целях командой ssh-keygen -t dsa. Эта команда создаст публичный/приватный ключи DSA
для использования только с SSH протоколом версии 2. Публичный ключ сохраняется в ~/.ssh/id_dsa.pub, а приватный ключ в ~/.ssh/id_dsa.
Публичный ключ DSA также должен быть помещен в каталог ~/.ssh/authorized_keys на удаленном компьютере.
Утилиты ssh-agent(1) и ssh-add(1)
используются для управления множеством защищенных паролем приватных ключей.
Внимание: Параметры и имена файлов могут различаться для разных версий OpenSSH, установленных в системе, для решения проблем обратитесь
к странице справочника ssh-keygen(1).
OpenSSH поддерживает возможность создания туннеля для
пропуска соединения по другому протоколу через защищенную сессию.
Следующая команда указывает ssh(1) создать туннель
для telnet:
% ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com
%
Команда ssh используется со следующими параметрами:
- -2
-
Указывает ssh использовать версию 2 протокола (не используйте
этот параметр, если работаете со старыми SSH серверами).
- -N
-
Означает использование в не-командном режиме, только для тунеллирования. Если этот
параметр опущен, ssh запустит обычную сессию.
- -f
-
Указывает ssh запускаться в фоновом режиме.
- -L
-
Означает локальный туннель в стиле localport:remotehost:remoteport.
- user@foo.example.com
-
Удаленный сервер SSH.
Туннель SSH создается путем создания прослушивающего сокета на определенном порту localhost. Затем все принятые на локальном хосту/порту соединения
переправляются на через SSH на определенный удаленный хост и порт.
В этом примере, порт 5023 на localhost перенаправляется на порт 23
на localhost удаленного компьютера. Поскольку 23 это порт telnet, будет создано
защищенное соединение telnet через туннель SSH.
Этот метод можно использовать для любого числа небезопасных протоколов, таких как
SMTP, POP3, FTP, и так далее.
Пример 14-1. Использование SSH для создания защищенного туннеля на SMTP
% ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
user@mailserver.example.com's password: *****
% telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTP
Этот метод можно использовать вместе с ssh-keygen(1) и
дополнительными пользовательскими учетными записями для создания более удобного
автоматического SSH тунеллирования. Ключи могут быть использованы вместо паролей, и
туннели могут запускаться от отдельных пользователей.
На работе находится SSH сервер, принимающий соединения снаружи. В этой же офисной сети
находится почтовый сервер, поддерживающий протокол POP3. Сеть или сетевое соединение
между вашим домом и офисом могут быть или не быть полностью доверяемыми. По этой причине
вам потребуется проверять почту через защищенное соединение. Решение состоит в создании
SSH соединения к офисному серверу SSH и тунеллирование через него к почтовому
серверу.
% ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com
user@ssh-server.example.com's password: ******
Когда туннель включен и работает, вы можете настроить почтовый клиент для отправки
запросов POP3 на localhost, порт 2110. Соединение будет безопасно
переправлено через туннель на mail.example.com.
Некоторые сетевые администраторы устанавливают на межсетевых экранах (брандмауэрах)
драконовские правила, фильтруя не только входящие соединения, но и исходящие. Вам может
быть разрешен доступ к удаленным компьютерам только по портам 22 и 80, для SSH и
просмотра сайтов.
Вам может потребоваться доступ к другому (возможно, не относящемуся к работе) сервису,
такому как Ogg Vorbis для прослушивания музыки. Если этот сервер Ogg Vorbis выдает поток
не с портов 22 или 80, вы не сможете получить к нему доступ.
Решение состоит в создании SSH соединения с компьютером вне межсетевого экрана и
использование его для тунеллирования сервера Ogg Vorbis.
% ssh -2 -N -f -L 8888:music.example.com:8000
user@unfirewalled-system.example.org
user@unfirewalled-system.example.org's password: *******
Клиентскую программу теперь можно настроить на localhost порт
8888, который будет перенаправлен на music.example.com порт 8000,
успешно обойдя межсетевой экран.