Технология SSH или Secure Shell позволяет пользователям подключаться к компьютеру с Linux или серверу удалённо и выполнять на нём команды, так как бы они вводились с клавиатуры непосредственно на нём. Вывод команд тоже передаётся в реальном времени в текстовом режиме, от чего складывается впечатление, что вы работаете непосредственно на той машине, к которой подключены.
В этой небольшой статье мы рассмотрим как настроить SSH в Debian 10 для подключения к системе извне, а также основные параметры на которые стоит обратить внимание.
Содержание статьи
Установка SSH в Debian
Если во время установки Debian вы выбрали установку SSH сервера, то в готовой системе он будет уже установлен и запущен. Для проверки его состояния выполните:
sudo systemctl status sshd
Если отображается надпись active, running, значит всё хорошо. В противном случае надо установить SSH сервер. Для этого используйте такую команду:
sudo apt install openssh-server ssh
Затем для запуска сервиса выполните:
sudo systemctl start sshd
Если на вашем сервере используется фаервол UFW, то вам надо разрешить удалённое подключение к порту 22:
sudo ufw allow ssh
Установка ssh в Debian завершена. Теперь вы можете попытаться подключится к SSH серверу локально:
ssh root@localhost
При первом подключении надо будет подтвердить добавление ключа сервера в файл ~/.ssh/known_hosts. Затем перед вами откроется приглашение ввода в консоли SSH.
Настройка сервера SSH
Все настройки сервера SSH находятся в файле /etc/ssh/sshd_config. Перед тем, как его редактировать лучше сделать резервную копию на всякий случай:
sudo cp /etc/ssh/sshd_config{,_back}
1. Смена порта
Одна из самых частых настроек, которую надо выполнять на большинстве серверов, это смена порта. Если у сервера есть публичный IP адрес, то его сканируют множество ботов, и как только они находят открытый порт 22, то сразу начинают пытаться перебрать пароль. Откройте конфигурационный файл и найдите строчку Port, расскоментируйте её, если нужно:
vi /etc/ssh/sshd_config
Затем пропишите нужное значение порта, например 2222:
Для того, чтобы изменения вступили в силу надо перезагрузить SSH сервер:
sudo systemctl restart sshd
Теперь, чтобы подключится к этому серверу надо будет явно указать порт с помощью опции -p:
ssh root@localhost -p 2222
2. Отключение входа суперпользователя
Чаще всего боты используют для перебора пароля логин суперпользователя. Авторизацию для этого пользователя можно отключить. Перед тем, как это делать убедитесь, что у вас есть в системе ещё как минимум один пользователь от имени которого вы сможете авторизоваться. Затем найдите строку PermitRootLogin и замените её значение на no:
Чтобы разрешить подключение ssh Debian для пользователя root, замените значение этого параметра на yes.
3. Авторизация по ключу
Следующий шаг по обеспечению безопасности вашего сервера - отключить вообще авторизацию по паролю, а использовать только авторизацию по ключу. Подробнее про авторизацию по ключу рассказано здесь. В конфигурационном файле sshd вам надо изменить только несколько строчек:
Сначала найдите строку PubkeyAuthentication и замените её значение на yes:
Перед тем как отключать возможность входа по паролю убедитесь, что вы добавили ключ для авторизации, как это описано в статье выше. Затем замените значения параметров ChallengeResponseAuthentication, PasswordAuthentication, UsePAM на no.
Настройка клиента
Для каждого пользователя можно сделать отдельные настройки клиента SSH. Для этого используется файл .ssh/config. Синтаксис файла такой:
Таких секций может быть сколько угодно. Сначала надо указать хост, для которого будут применяться настройки, затем параметры для него. Можно создать секцию, которая будет работать для любого хоста, для этого используйте *. Например, чаще всего для подключения по SSH используется пользователь root. Давайте использовать его по умолчанию для всех подключений:
Если для какого либо хоста вы меняли порт, что чтобы не вводить его каждый раз, можно настроить порт по умолчанию в этом файле, например:
Теперь при подключении можно просто набрать:
ssh localhost
Выводы
В этой статье мы рассмотрели как установить ssh, а также как выполняется настройка SSH в Debian. Теперь вы знаете основные моменты, которые надо сделать чтобы комфортно пользоваться этим сервисом. А какие настройки SSH делаете вы? Напишите в комментариях!
Спасибо, познавательно.
Есть ли отличия в настройке в Ubuntu?
1) nano /etc/ssh/sshd_config
2) port 2222
PermitRootLogin yes
3)nano /etc/network/interfaces
4) post-up iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 22 -j DNAT --to-destination сервер :2222
5) post-up iptables -A FORWARD -s () -p tcp --dport 2222 -j DROP
Ssh root@10.1.0.2 -p 2222
Мне очень помогла эта статья! Спасибо!
А после перезагрузки служба сама стартанёт или каждый раз нужно systemctl start sshd делать?
Стартанет, если она enabled
# systemctl enable sshd
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'
namo : openssh.serever***0.0.1.0
state: installed
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd
Для корректной работы «SSH-сервера», нужно добавить разрешающие правила в Windows Defender Firewall
Авторизуемся под учетными данными нашей виртуальный машины и переходим по пути «Control Panel» -> «System and Security» -> «Windows Defender Firewall»
Открываем параметр «Windows Defender Firewall» и кликаем по пункту «Advanced Settings»
Выбираем пункт «Inbound Rules» и создаем новое правило при помощи кнопки «New Rule»
Выбираем тип правила «Port»
Указываем протокол «TCP» и порт «2222»
Разрешаем подключение к выбранному порту «Allow the connection»
Выбираем тип сетей, где будет доступен протокол
Называем правило «SSH» и нажимаем кнопку «Finish» для завершения создания правила
Открываем конфигурацию «SSH-сервера» для редактирования
изменяем port 2222
открываем
start-process notepad C:\Programdata\ssh\sshd_config
permitRootLogin yes
PasswordAuthentication yes
permitEmptyPassword no
restart-service sshd
открываем hq-r
iptables -t nat -A PREROUTING --dst 1.1.1.100 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.60:2222
ip6tables -t nat -A PREROUTING --dst 1110:a::100 -p tcp --dport 22 -j DNAT --to-destination 192:168:d::6:2222
dpkg-reconfigure iptables-persistent
[ Виртуальная машина HQ-SRV ]
Авторизуемся под учетными данными нашей виртуальный машины и переходим по пути «Control Panel» -> «System and Security» -> «Windows Defender Firewall»
Открываем параметр «Windows Defender Firewall» и кликаем по пункту «Advanced Settings»
Выбираем пункт «Inbound Rules» и создаем новое правило при помощи кнопки «New Rule»
Выбираем тип правила «Custom»
Выбираем тип «All Programs»
Выбираем тип протокола «TCP» и указываем локальный порт «2222»
Указываем IP-адреса, которые будут заблокированы к SSH-сервису
Запрещаем подключение к выбранному порту «Block the connection
Называем правило «BlockCLI-SSH» и нажимаем кнопку «Finish» для завершения создания правила
Устанавливается ssh:
apt install -y ssh
Далее добавляется в автозагрузку:
systemctl enable ssh
Настройки SSH
Все настройки хранятся в файле sshd_config в директории /etc/ssh
Файл открывается текстовым реактором:
nano /etc/ssh/sshd_config
В файле ищутсятся параметры:
Port со значением 22
PermitRootLogin со значением prohibit-password
AddressFamily со значением any
Port выставляется 2222
значение prohibit-password меняется на yes и снимается знак коментария "#"
AddressFamily выставляется inet (чтобы был доступ только по ipv4)
Далее перезапуск ssh:
systemctl restart ssh
При перезагрузке не должно возникнуть ошибок.
Можно проверить, работает ли ssh локально:
ssh пользователь@адрес узла -p 2222
На вопос "Are you sure you want to continue connecting?" дается положительный ответ (вводится yes).
Появляется поле для ввода пароля. Поскольку пользователем был указан root при подключении, пароль будет от него (P@ssw0rd). При вводе пароля символы не отображаются, но вводятся.
После этих действий подключение будет выполнено.
При вводе "exit" соединение должно закрываться с таким сообщением.
Далее выполняется условие с переадресацией порта SSH с помощью файервола.
nano /etc/hosts.deny
В файл дописывается: sshd:ip-адрес блокируемого устройства
Сохранить файл (CTRL+S), выйти (CTRL+X)
Далее перезапуск ssh:
systemctl restart ssh
apt install ssh -y или openssh-sever
systemctl enable ssh
nano /etc/ssh/sshd_config Port 2222
AddressFamily inet
PermitRootLogin yes
systemctl restart ssh
ssh (3) -p 2222
apt install -y ssh
systemctl enable ssh
nano /etc/ssh/sshd_config
Port со значением 22
PermitRootLogin со значением prohibit-password
AddressFamily со значением any
Port выставляется 2222
значение prohibit-password меняется на yes и снимается знак коментария "#"
AddressFamily выставляется inet (чтобы был доступ только по ipv4)
systemctl restart ssh
1) nano /etc/ssh/sshd_config
2) port 2222
PermitRootLogin yes
3)nano /etc/network/interfaces
4) post-up iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 22 -j DNAT --to-destination сервер :2222
5) post-up iptables -A FORWARD -s () -p tcp --dport 2222 -j DROP
Ssh root@10.1.0.2 -p 2222