Настройка сервера SSH

07.09.2010 - 20:01

В FreeBSD SSH-сервер установлен по умолчанию, нам необходимо его просто включить и немного настроить.
Первым делом добавим его для автостарта в /etc/rc.conf:

sshd_enable="YES"

Настройка конфигурационного файла
Конфигурационный файл сервера находится по адресу /etc/ssh/sshd_config, а клиента в /etc/ssh/ssh_config.

[root@router /etc/rc.d]# cat /etc/ssh/sshd_config

#порт на котором висит демон sshd, меняем его для безопасности на 2222 или какой нибудь другой.
Port 2222

#рекомендовано использовать протокол версии не ниже 2, так как SSH2 разработан с учетом уязвимостей в SSH1.
Protocol 2

#Не использовать ДНС
UseDNS no

#Опция "ListenAddress" определяет IP адрес интерфейса к которому подключен сокет ssh демона. По умолчанию это "0.0.0.0";
#для улучшения безопасности вы можете ограничиться только одним адресом.
#ListenAddress 0.0.0.0

#AddressFamily any
#ListenAddress ::

#Опция "HostKey" определяет место содержащее приватный ключ сервера.
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key

#Опция "KeyRegenerationInterval" определяет как долго в секундах сервер должен ждать перед автоматической регенерацией своего ключа.
#Эта опция защиты предназначена для предотвращения расшифровки захваченного сеанса связи.
#KeyRegenerationInterval 1h

#Опция "ServerKeyBits" определяет как много бит используется в ключе сервера. Эти биты используются когда демон стартует для генерации RSA ключа.
#ServerKeyBits 768

# Logging
# obsoletes QuietMode and FascistLogging

#Опция "SyslogFacility" определяет с какого средства (facility) поступают сообщения в syslog от sshd.
#facility представляет подсистему, которая создает сообщение, в нашем случае AUTH.
#SyslogFacility AUTH

#Опция "LogLevel" определяет уровень важности сообщения поступающего системе syslog от sshd. INFO - хороший выбор.
#Смотрите страницу man для sshd для получения большей информации о других возможностях.
LogLevel INFO

#Разрешаем доступ только конкретным пользователям. Для разделения нескольких имен используйте пробелы:
AllowUsers root

#через какое время произойдет разрыв соединения, если пользователь не введет пароль.
LoginGraceTime 30 # 30 sec

#Опция "PermitRootLogin" определяет может ли root подключаться, используя ssh.
PermitRootLogin yes

#Опция "StrictModes" определяет должен ли ssh проверять права пользователей в их домашних каталогах и файлы rhosts перед тем, как пустить на сервер.
#Эта опция должна всегда быть установлена в "yes", потому что иногда пользователи могут случайно оставить свои каталоги и файлы открытыми всем для #записи.
#StrictModes yes

# Пользователь имеет право на 4 попытки авторизации.
MaxAuthTries 4

#используется для протокола SSH1
#RSAAuthentication yes

#разрешаем аутентификацию пользователя по его публичному ключу
PubkeyAuthentication yes

#путь к файлу с публичными ключами ssh-rsa
AuthorizedKeysFile      .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication

#Опция "IgnoreUserKnownHosts" определяет должен ли ssh демон игнорировать
#пользователей "$HOME/.ssh/known_hosts" во время RhostsRSAAuthentication.
#IgnoreUserKnownHosts no

#Опция "IgnoreRhosts" определяет должны ли файлы ~/.rhosts или ~/.shosts использоваться при аутентификации.
#Из соображений безопасности рекомендуется не использовать эти файлы.
#IgnoreRhosts yes

#Опция "PasswordAuthentication" определяет можно ли использовать аутентификацию по паролю.
#Для лучшей защищенности эта опция должна быть установлена в "yes".
PasswordAuthentication yes


#Опция "PermitEmptyPasswords" определяет позволяет ли сервер входить на сервер с пустыми паролями.
#Если вы используете утилиту "scp" для автоматического создания резервных копий через сеть, то нужно установить эту опцию в "yes".
#PermitEmptyPasswords no

# Change to no to disable PAM authentication
#ChallengeResponseAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

# Set this to 'no' to disable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
#UsePAM yes

#разрешить маршрутизацию tcp-пакетов
#AllowTcpForwarding yes

#разрешить или нет доступ хостам доступ к перенаправленным портам
#GatewayPorts no

#Опция "X11Forwarding" определяет должен ли сервер перенаправлять X11 пакеты или нет.
#Так как мы установили сервер без GUI, то эту опцию устанавливаем в no.
X11Forwarding no

#X11DisplayOffset 10
#X11UseLocalhost yes

#Опция "PrintMotd" определяет должен ли ssh демон печатать содержимое файла "/etc/motd", когда пользователь входит на сервер.
#Файл "/etc/motd" также известен как "сообщение дня".
#PrintMotd yes

#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
#PermitTunnel no

#при подключении будет отображаться текстовое приглашение в систему с файла banner.txt
Banner /etc/ssh/banner.txt

#SFTP-сервер (SSH File Transfer Protocol) встроен в OpenSSH и по умолчанию включен
Subsystem       sftp    /usr/libexec/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       ForceCommand cvs server

Далее перезагружаем демон sshd:

[root@router /etc/rc.d]# /etc/rc.d/sshd restart
Stopping sshd.
Starting sshd.
[root@router /etc/rc.d]#

Для подключения к серверу SSH введите:

[root@pc /etc/rc.d]#ssh root@192.168.0.1 -p 2222

Если кодировка, как у меня на Linux - UTF-8, а подключаемся к FreeBSD у которой кодировка KOI8-R, тогда запускаем командой с перекодировкой в локаль KOI8-R:

[root@pc /etc/rc.d]#luit -encoding "KOI8-R" ssh 192.168.0.1 -p 2222

Аутентификация по публичному ключу ssh-rsa
На клиенте генерируем RSA-ключ с помощью программы ssh-keygen:

root@mops:/home/vlymar# ssh-keygen
Generating public/private rsa key pair.
#введите имя файла в который необходимо сохранить ключ
Enter file in which to save the key (/root/.ssh/id_rsa):

#введите пароль (не пустой):
Enter passphrase (empty for no passphrase):

#повторите ввод пароля
Enter same passphrase again:

#куда будут сохранены ключи
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
93:8a:e7:11:16:9b:d9:20:ed:5e:51:b5:e4:1a:1d:ae root@mops
The key's randomart image is:
root@mops:/home/vlymar#

который находится в /root/.ssh/id_rsa.pub и имеет вид:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFLVKFkSB86SRorLO6SKh9z1yuDLIMtxjU0sOgwBVVZik958ncRuoGfSPd5Iptlcm4zecVcukHlmVzsCJo3r root@mops

далее заходим на SSH сервер и копируем RSA-ключ созданный на клиенте в /root/.ssh/authorized_keys сервера
теперь можем попробовать зайти на SSH сервер без ввода пароля. Happy

Ваша оценка: Нет Средняя: 3 (4 голосов)