Что такое SSH зачем нужно
SSH — это протокол прикладного уровня. SSH-сервер обычно прослушивает соединения на TCP-порту 22. Сервер SSH обеспечивает безопасную связь для удаленного управления сервером.
Как установить SSH на сервере
После установки сервера Debian необходимо наладить с ним удаленное соединение для управления им. Производить установку необходимо с правами суперпользователя root , необходимо выполнить команду su и ввести пароль суперпользователя или через sudo ,каждый раз вводя пароль суперпользователя, но можно немного отредактировать файл sudoers чтобы не вводить каждый раз пароль. как это сделать можно прочитать тут. Установка сервера SSH производим с правами суперпользователя.
Проверить установлен ли SSH.
sudo systemctl status ssh
Если установлен увидим в терминале:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-04-30 18:12:35 MSK; 24min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1677 (sshd)
Tasks: 1 (limit: 2359)
Memory: 3.6M
CGroup: /system.slice/ssh.service
└─1677 /usr/sbin/sshd -D
Установка SSH
apt update
apt upgrade -y
apt install ssh -y
Или, что для Debian одно и то же все равно устанавливается OpenSSH, такой командой:
apt update
apt upgrade -y
apt install openssh-server -y
Добавить SSH в автозагрузку
Чтобы каждый раз после перезагрузки или включения сервера не надо было активировать SSH нужно включить его в автозагрузку
sudo systemctl enable ssh
Как узнать IP адрес сервера
Локальный
Теперь у нас есть удаленный доступ к серверу, можно от него отойти и с удобствами продолжать дальнейшие настройки. Не забыв узнать его ip-адрес в локальной сети:
ip addr show | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'
Или командой
hostname -I
Внешний
Адрес по которому можно подключиться из интернета, грубо говоря с любой точки планеты, где есть доступ во всемирную паутину. При условии, что сервер находится не за NATом. А если за натом, то порты к нему прокинуты.
wget -q -O - ifconfig.me/ip
Подключение к удаленному серверу по SSH в Windows 10
Если OpenSSH не включен, то нужно сделать некоторые телодвижения
В поиске набрать: Параметры - Открыть - Приложения - Дополнительные параметры в строке поиска установленных компонентов набрать Клиент ssh , если его нет, то нажать +Добавить в строке поиска набрать Клиент ssh поставить галку и нажать Установить. После установки обязательно перезагрузить виндовс.
Подключение к серверу SSH в Windows 10 по паролю
Все что нужно для связи с сервером установлено, его адрес известен, теперь подключаемся, первое соединение будет по паролю. Открываем cmd вводим:
ssh -p порт имя_пользователя@айпи_адрес_сервера порт можно не указывать, если в целях безопасности он не изменен
ssh -p 22 [email protected]
При первом подключении будет предупреждение с которым соглашаемся написав yes
The authenticity of host '192.168.0.15 (192.168.0.15)' can't be established.
ECDSA key fingerprint is SHA256:XVVCjPfdEKCj+vLyyIipy1ViGG9ienBkzpROFRtcufU.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Попросят ввести пароль пользователя от имени которого подключаемся, введя его попадаем в командную строку сервера.
Подключение к серверу SSH в Windows 10 по ключу
Удобство подключения по ключу состоит в том что не надо вводить каждый раз пароль при подключении и дает защиту от брутфорс атак. Для генерации ключа должен быть установлен openssh-client
.
- Нажать Пуск, выбрать Параметры (шестеренка)
- Выбрать Приложения из Параметры Windows
- Выбрать Приложения и возможности Дополнительные возможности (Дополнительные компоненты)
- Выбрать «Клиент OpenSSH» и нажмите кнопку «Установить».
Утилиты входящие в пакет:
- ssh.exe
- scp.exe
- sftp.exe
- ssh-add.exe
- ssh-agent.exe
- ssh-keygen.exe
- ssh-keyscan.exe
Открыть cmd вводим:
ssh-keygen
Поступит предложение создать папку .ssh , если ее нет, то появится. В этой папке создадутся два файла с именами - id_rsa и id_rsa.pub Соглашаемся нажав ввод.
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\user/.ssh/id_rsa):
Попросят ввести пароль для использования ключа. Это на тот случай, если вашим компьютером может воспользоваться злоумышленник. Если пароль не нужен оставляем поле пустым, нажимаем ввод два раза. На экране увидим пути к двум созданным файлам:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\user/.ssh/id_rsa.
Your public key has been saved in C:\Users\user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:RIjWELs/yTOtfWEmnOIGNP6iIhixG/qazVeOKpb70g0 user\user@User
The key's randomart image is:
+---[RSA 3072]----+
| o= .. |
| o.o. |
| .. . |
|. o. . |
| o o.. .S. |
|+ Eoooo+ + |
|o+o oBB..+ . |
|BB .+.=* . |
|=*X= o. .. |
+----[SHA256]-----+
Необходимо передать публичный ключ на сервер. В этом же окне cmd создадим каталог и скопируем туда ключ, путь и адрес сервера с пользователем указываем свои:
ssh [email protected] mkdir ~/.ssh
scp C:\Users\user/.ssh/id_rsa.pub [email protected]:~/.ssh/
Заходим на сервер по паролю, чтобы дописать в файл authorized_keys новый ключ. Так можно дать доступ по ключу нескольким компьютерам дописав их ключи в этот файл.
ssh [email protected]
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Выходим с сервера exit и вновь пробуем подключится по SSH, в этот раз пароль не будет запрошен.
Главное помнить подключение идет по стандартному порту 22, если порт подключения был изменен в конфигурационном файле SSH то его нужно указать при помощи ключа -p
(маленькая буква) для команды ssh
и ключ -P
(заглавная буква) для scp
пример:
ssh -p 1234 [email protected]
scp -P 12345 /home/user/.ssh/id_rsa.pub [email protected]:~/.ssh/
Подключение к удаленному серверу по SSH в Debian
Подключение к серверу SSH в Debian по паролю
Открыть терминал ввести команду:
ssh [email protected]
При первом подключении будет предупреждение с которым соглашаемся написав yes
The authenticity of host '192.168.0.15 (192.168.0.15)' can't be established.
ECDSA key fingerprint is SHA256:XVVCjPfdEKCj+vLyyIipy1ViGG9ienBkzpROFRtcufU.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Попросят ввести пароль пользователя от имени которого подключаемся, введя его попадаем в командную строку сервера.
Подключение к серверу SSH в Debian по ключу
Для генерации ключа должен быть установлен openssh-client
sudo apt install openssh-client
Открыть терминал ввести команду:
ssh-keygen
Подтвердить все нажатием Enter
Запомнить путь, где сохранился публичный ключ. Он указан после фразы Your public key has been saved in
Необходимо передать публичный ключ на сервер. Создать каталог и скопируем туда ключ, путь и адрес сервера с пользователем указываем свои:
ssh [email protected] mkdir ~/.ssh
scp /home/user/.ssh/id_rsa.pub [email protected]:~/.ssh/
Заходим на сервер по паролю, чтобы дописать в файл authorized_keys новый ключ. Так можно дать доступ по ключу нескольким компьютерам дописав их ключи в этот файл.
ssh [email protected]
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Выходим с сервера exit и вновь пробуем подключится по SSH, в этот раз пароль не будет запрошен.
Главное помнить подключение идет по стандартному порту 22, если порт подключения был изменен в конфигурационном файле SSH то его нужно указать при помощи ключа -p
(маленькая буква) для команды ssh
и ключ -P
(заглавная буква) для scp
пример:
ssh -p 1234 [email protected]
scp -P 12345 /home/user/.ssh/id_rsa.pub [email protected]:~/.ssh/
Настройка безопасности SSH
Все изменения производить в файле конфигурации:
sudo nano /etc/ssh/sshd_config
Поиск нужной строки в редакторе nano нажать кнопки Ctrl+W ввести искомое слово.
Сохранение изменений Ctrl+O Enter сохранить файл Ctrl+X выйти.
Отключение входа по паролю
Когда удачно настроен вход по ключу можно отключить вход по паролю это предотвратит вход любого пользователя с помощью SSH с использованием пароля. Входим на сервер и редактируем конфиг SSH.
Внутри файла найти PasswordAuthentication
. Если он закомментирован, раскомментировать. Установить его на no
чтобы отключить вход с паролем. Для кучи не лишним будет ChallengeResponseAuthentication
запретить , если еще не стоит no
. Включить аутентификацию по ключам SSH PubkeyAuthentication yes
.
Замена стандартного порта доступа к SSH
В файле sshd_config находим #Port 22 раскомментировать и ввести значение желаемого порта.
После смены порта на нестандартный, доступ к серверу будет возможен с ключом -p номер порта
ssh -p номер_порта [email protected]
Отключение или ограничение доступа root по SSh
Найти строчку PermitRootLogin
по умолчанию она закомментирована со значением prohibit-password
если ее раскомментировать, то аутентификация root разрешена любая возможная, кроме пароля.
возможные значения PermitRootLogin
:
no
- запретить вход пользователя rootyes
- разрешить вход пользователя rootwithout-password
- только с аутентификацией RSA (по публичному ключу)forced-commands-only
- только для команд
Рекомендую отключить доступ для root - поставить значение PermitRootLogin no
Доступ с определенных IP адресов
Если нету необходимости давать доступ к серверу SSH из глобальной сети, для большей безопасности ограничить прослушиваемые ip-адреса. Например доступ только из локальной сети:
ListenAddress 192.168.0.1/24
По умолчанию стоит слушать всех:
ListenAddress 0.0.0.0
Доступ определенных пользователей
Ограничить вход только определенным пользователям:
AllowUsers user1 user2
Перезагрузка сервера SSH
После любых изменений проверить конфигурацию
sudo sshd -t -f /etc/ssh/sshd_config
Перезапустить сервис SSH
sudo systemctl restart ssh
Переустановка сервера SSH
Бывают такие ситуации, когда где то в чем то ошибся и не сохранил файл конфигурации произвел изменения. После чего все пошло не так и перестало работать так как должно. Или еще какие то ошибки повлекшие не работоспособность сервера SSH. Для начала сохраним файл конфигурации, потому что в нем могут быть ценные комментарии наработанные годами.
sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.copy
Наиболее подходящим считаю такую переустановку в отличии от purge
sudo aptitude reinstall openssh-server -y
И далее восстанавливаем шаг за шагом конфиг
Настройка Fail2Ban
Описана здесь
Двухфакторная аутентификация
Ошибка доступа по SSH в windows 10
Бывает так, что подключаясь к серверу вылезает такая ошибка:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:HHD3xjYV/RdL7RvEnUe+CyATZip4nprz2aBSbj3K6gU.
Please contact your system administrator.
Это возможно, когда на этом же айпи адресе был другой сервер к которому подключались с этого же компьютера. Исправить довольно просто, но не просто было найти решение. В командной строке cmd виндовс набираем команду: ssh-keygen -R айпи_адрес_сервера
ssh-keygen -R 192.168.0.15
Комментарии