Главная >> Инструкции >> Настройка SSH в Debian

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

Технология 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:

Port 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. Давайте использовать его по умолчанию для всех подключений:

Host *
  User root

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

Host localhost
Port 2222

Теперь при подключении можно просто набрать:

ssh localhost

Выводы

В этой статье мы рассмотрели как установить ssh, а также как выполняется настройка SSH в Debian. Теперь вы знаете основные моменты, которые надо сделать чтобы комфортно пользоваться этим сервисом. А какие настройки SSH делаете вы? Напишите в комментариях!

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

12 комментариев к “Настройка SSH в Debian”

    • 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

      Ответить
  1. 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» для завершения создания правила

    Ответить
  2. Устанавливается 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 с помощью файервола.

    Ответить
  3. nano /etc/hosts.deny
    В файл дописывается: sshd:ip-адрес блокируемого устройства
    Сохранить файл (CTRL+S), выйти (CTRL+X)
    Далее перезапуск ssh:
    systemctl restart ssh

    Ответить
  4. 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

    Ответить
  5. 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

    Ответить
  6. Очень прошу того, кто знает помочь мне КОНКРЕТНО с настройкой SSH сервера на домашнем сервере. Поскольку этот сервер домашний МНЕ НЕ НУЖНА аутентификация при помощи ключа, только по паролю.
    Меня категорически не устроят такие ответы, как "В строке подключения SSH указываем значением "yes"." А что это за строка, где она находится - информации АБСОЛЮТНЫЙ НУЛЬ!!!
    Вся проблема в том, что я самоучка и многих элементарных вещей не знаю.
    13 лет назад я создал домашний сервер на Debian 7 и путём обновлений довёл его до версии 12.
    При помощи этой статьи я установил и настроил SSH на сервере. и в результате добился только того, что можно из командной строки на сервере командой "ssh root@localhost -p2222" подключиться к самому себе, а из терминала на рабочей станции АБСОЛЮТНО НЕ ПОЛУЧАЕТСЯ!
    Вот, что отвечает сервер на попытку подключения:
    ssh 192.168.8.3 -l user -p2222
    ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ssh: @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGET @
    ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ssh: IT IS POSSIBLE THAT SOMEONE IS DOINGSOMETHING NASTY!
    ssh: Someone could be eavesdropping on yoy right now (man-in-the-middle attack)!
    ssh: It is also possible that a host key has just been changed.
    ssh: The fingerprint for the ED25519 key sent by the remote host is
    SHA256:2b1/znJa2lf1CPIB1f72MGUMVIovR89EJpS1H7bdvhE.
    ssh: Please contact your system administrator.
    ssh: Add correct host key in /root/.ssh/know_hosts:3
    ssh: Host key for [192.168.8.3]:2222 has changed and you have requested strict checking.
    ssh: Host key verification failed.

    Перевод:
    ssh 192.168.8.3 -l user -p2222
    ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ssh: @ ВНИМАНИЕ: ИДЕНТИФИКАЦИЯ УДАЛЕННОГО ХОСТА ИЗМЕНЕНА @
    ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ssh: ВОЗМОЖНО, КТО-ТО ДЕЛАЕТ ЧТО-ТО НЕПРИЯТНОЕ!
    ssh: Возможно, кто-то прямо сейчас подслушивает ваш телефон (атака "человек посередине")!
    ssh: Также возможно, что ключ хоста только что был изменен.
    ssh: Отпечаток пальца для ключа ED25519, отправленный удаленным хостом, является
    SHA256:2b1/znJa2lf1CPIB1f72MGUMVIovR89EJpS1H7bdvhE.
    ssh: Пожалуйста, свяжитесь со своим системным администратором.
    ssh: Добавьте правильный ключ хоста в /root/.ssh/know_hosts:3
    ssh: Ключ хоста для [192.168.8.3]:2222 был изменен, и вы запросили строгую проверку.
    ssh: Проверка ключа хоста не удалась.

    Но я в настройках только изменил номер порта и не создавал ни каких ключей!
    Настроить доступ аналогично, как я это делал в Debian 7 не удаётся! К тому же, у меня утрачены записи, касающиеся настройки SSH.

    Ответить

Оставьте комментарий