Ubuntu установка настройка SSH сервера

Проверяем установлен ли OpenSSH и его версию 
Установка SSH
Создание резервного файла конфигурации
Редактирование файла конфигурации
Настроим доступ к OpenSSH Server с OpenSSH Client с авторизацией по ключу
Включаем авторизацию по ключам
Запрет авторизации по паролю
Настройка подключения к SSH серверу из Windows через PuTTY используя сертификат
Отзыв сертификата, запрещаем доступ пользователю
 

Проверяем установлен ли SSH и его версию

dpkg -l|grep openssh-server

Она должна быть равна или выше 5.6

Установка и настройка SSH

Установить(если Вы не выбрали установку OpenSSH при установки Ubuntu)/включить/проверить работу SSH сервера, пока вы находитесь рядом с хостом физически:

sudo apt-get install ssh

После установки сервер ssh автоматически прописывается в автозагрузку
файл конфигурации ssh сервера /etc/ssh/sshd_config
Перед правкой конфигурационного файла сделаем резервную копию

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

Создадим новый конфигурационный файл:

Далее в примере будем использовать порт 8022 (см конфиг)
Конфиг взять http://help.ubuntu.ru/wiki/ssh спасибо MadKox

Сразу небольшая ремарка к конфигу в нем отключена возможность по ssh логинеться под пользователем root, поэтому если вы "любитель" поправьте настройку PermitRootLogin на yes

Для копирования выше указаного конфига на вашу unix машину
Перейдите в католог где хранится конфигурационный файл sshd_config

sudo cd /etc/ssh

Поскольу мы сделали резервную копию файла sshd_config удалим его

sudo rm sshd_config

Все еще находясь в директории /etc/ssh скопируем с сайта itautsors выше указаный файл конфигурации ssh,

sudo wget http://itautsors.ru/sshd_config

Перезапустим демон

sudo service ssh restart

Убедимся что демон SSH запущен

ps -A | grep sshd

Увидим что то подобное

<какой то номер> ? 00:00:00 sshd

Если строки нет то SSH демон не запущен,

Проверим прослушиваются ли входящие соединения:

sudo ss -lnp | grep sshd

В ответ получим

0 128 :::22 :::* users:(("sshd",16893,4))
0 128 *:22 *:* users:(("sshd",16893,3))

Если строк более чем одна, значит демон SSH прослушивает более чем один порт, если не одной нужно указать хотя бы один порт, в обоих случаях неоходимо вернутся и отредактировать конфигурационный файл

Попробуем войти с локального компьютера (то есть заходим с того же ПК на котором настраиваем ssh server, так сказать первоначальная проверка), (помним что у нас порт не стандартный 8022):

ssh -v localhost -p 8022

Будет выведена отладочная информация, и предложение ввести пароль.
После удачного соединения для выхода наберите:

exit

Настроим доступ к OpenSSH Server с OpenSSH Client с авторизацией по ключу

Дано: Хост OpenSSH Server на который в будущем хотим логинется по ssh под пользователем NameUserOnOpenSSHServer с хоста OpenSSH Client Сгенерируем пару ключей на Хосте с которого мы хотим подключится (OpenSSH Client). Проверьте может пара ключей уже сгенерирована.
Согласившись с местом сохранения ключа (/home/NameUserOnOpenSSHClient/.ssh/id_rsa), пароль можно оставить пустым тогда при аутентификации по сертификату не нежно будет вводить пароль что менее надежно но намного удобнее (в нашем примере вводить пароль не будем):

ssh-keygen -t rsa -b 4096

В домашней папке ~/.ssh пользователя под которым запускали генерецию (в нашем примере NameUserOnOpenSSHClient) на хосте OpenSSH Client появятся файлы:

~/.ssh/id_rsa.pub публичный
~/.ssh/id_rsa приватный

Выставим права на папку и файлы
Без разницы под каким пользователем мы будем запускать генерацию на OpenSSH Client, единственное логинется на удаленную машину OpenSSH Server нужно будет под этим пользователем так как права будут высталены следующие (такие права необходимо выставить что бы не был скомпроментирован приватный ключ) :

$ chmod 0700 ~/.ssh/
$ chmod 0600 ~/.ssh/id*

Передадим публичный ключ с клиента на сервер для пользователя под которым находимся, командой ssh-copy-id в файл ~/.ssh/authorized_keys, если порт на котором слушает сервер не стандарный, необходимо его прописать используя ключ -p и заключить в кавычки. Ключ можно передать любым способом потому что он публичный.

ssh-copy-id "-p 8022 NameUserONOpenSSHServer@ipAdressOpenSSHServer"

NameUserOnOpenSSHServer - это тот пользователь под которым мы будем в будущем логинется на удаленной машине.
Далее необходимо ввести пароль пользователя NameUserONOpenSSHServer, и после удачной авторизации увидим подсказку:

Now try logging into the machine, with "ssh 'NameUserONOpenSSHServer@ipAdressOpenSSHServer'", and check in:
  ~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Логинемся на Хост через ssh и проверяем содержания файла (в этом файле могут быть прописаны и другие ключи, ищем наш.) NameUserONOpenSSHServer/.ssh/authorized_keys:
sudo ssh 'NameUserONOpenSSHServer@ipAdressOpenSSHServer'
sudo cat /home/NameUserONOpenSSHServer/.ssh/authorized_keys

Он должен совподать с содержимым файла NameUserONOpenSSHClient/.ssh/id_rsa.pub

sudo cat /home/NameUserONOpenSSHClient/.ssh/id_rsa.pub

На сервере проверем включена ли авторизация по ключу

sudo mcedit /etc/ssh/sshd_config

Жмем F7, ищем PubkeyAuthentication, RSAAuthentication, AuthorizedKeysFile
должно быть раскоментированы строчки/выставлены параметры (проверяем):

# разрешаем использование RSA ключей
RSAAuthentication yes # если используете SSH1 не желательно

# разрешаем авторизацию при помощи ключей
PubkeyAuthentication yes

# Путь где будут находиться ключи, с которыми можно соединяться для каждого пользователя свой файл в его директории.
AuthorizedKeysFile %h/.ssh/authorized_keys
Перезапустим сервер SSH
sudo service ssh restart

Выставляем права на файл /home/NameUserOnOpenSSHServer/.ssh/authorized_keys

chmod 0600 ~/.ssh/authorized_keys
Выходим из консоли OpenSSHServer, пробуем залогинится с клиента на сервер использую сертификат, вводим строчку и должны попасть в консоль OpenSSHServer без ввода паролья (если при генерации ключей вы не вводили пароль)
ssh NameUser@ipAdressOpenSSHServer

После формирования сертификатов для всех пользователей, по вашему усмотрению можете отключить аутентификацию по паролю, отредактировав все тот же файл :/etc/ssh/sshd_config

Внимание перед отключением аутентификации по паролю убедитесь в возможности доступа по ключу

sudo mcedit /etc/ssh/sshd_config

Жмем F7, ищем PasswordAuthentication

## PasswordAuthentication ##################################
#                                                          #
# Указывает, разрешена ли аутентификация с использованием  #
# пароля.                                                  #
# По умолчанию - “yes”.                                    #
#                                                          #
PasswordAuthentication no

После этого можно создать скрипт по подключаться к удаленной консоли использую два клика мышки.
Не забывайте про безапасность, шифруйте винчестеры на ноутбуках.

Включаем авторизацию по ключам

sudo nano /etc/ssh/sshd_config

должно быть раскоментированы строчки/выставлены параметры (проверяем):

# разрешаем использование RSA ключей
RSAAuthentication yes # если используете SSH1 не желательно
# разрешаем авторизацию при помощи ключей
PubkeyAuthentication yes
# Путь где будут находиться ключи, с которыми можно соединяться для каждого пользователя свой файл в его директории.
AuthorizedKeysFile %h/.ssh/authorized_keys
 
Перезапустим сервер SSH
sudo service ssh restart

После формирования сертификатов для всех пользователей, по вашему усмотрению можете отключить аутентификацию по паролю, отредактировав все тот же файл :/etc/ssh/sshd_config
Внимание перед отключением аутентификации по паролю убедитесь в возможности доступа по ключу

PasswordAuthentication no
PermitEmptyPasswords no

Настройка подключения к SSH серверу из Windows через PuTTY используя сертификат

Выполним конвертацию приватного ключа для нашего пользоавтеля NameUser полученого нами ранее, и переданого на машину Windows с клиентом SSH PuTTY безопасным способом.
Для этого запустим программу PuTTYgen.
Загружаем файл нашего приватного ключа Conversions - Import Key
Дальее save private key и сохраняем полученный ppk файл, в месте где он будет хранится и не сможет быть скомпроментирован
Открываем программу PuTTY Настраиваем соединение:

Session - Host Name or IP Address - ip адрес хоста на котором настраивался SSH Сервер
Session - Port - порт указаный нами в конфиг файле SSH сервера
Session - Saved Session - название сессии
Connection - data - autologin username =NameUser
Connection - data - ssh -auth = ppk file path
Session - Save - Сохраняем сессию
Session - Saved Session (вибираем нашу сессию) - Load - Open - Сессия должна запуститься

Отзыв сертификата, запрещаем доступ пользователю

Для того что бы закрыть доступ пользователю NameUser к Хосту по сертификату перейдем в папку где хранится его сертификат

cd ~/.ssh

Удалим файл его публичного сертификат authorized_key с сервера OpenSSH, если же вы неосмотрительно не удаляли файлы id_rsa.pub и id_rsa удалите их. Просматриваем содержимое

ls

каталога, удаляем необходимые файлы

rm authorized_key id_rsa.pub id_rsa

Если на Хосте с сервером OpenSSH, не выключена авторизация по паролю, а закрыть доступ необходимо полностью, удалите пользователя, или смените пароль.

 

Таксаномия: 

Комментарии

Огромное спасибо! Всё, что нужно в одном месте.

Спасибо за статью

Добавить комментарий