ВОЙТИ
    opened image

    В этой статье мы увидим как изменить стандартный порт подключения SSH на не стандартный, и отключить авторизацию по паролю. 

    !!! ВАЖНО !!!

    Убедитесь что перед этим Вы уже создали SSH ключи, и успешно подключились к северу с их использованием. Или же у Вас имеется доступ к серверу по VNC что бы обратно включить авторизацию по паролю и вернуть настройки по умолчанию.

    И так, для начала необходимо отредактировать файл sshd_config:
     

    vim /etc/ssh/sshd_config


    В строке Port 22 (Раскомментируем если закомментирована) и изменяем порт 22 на нужный порт, например 22333:

     

     

     

    Port 22333

     



    Перезапускаем службу sshd:

     

    systemctl restart sshd

     


    Проверим, слушается ли установленный порт 22333

     

    netstat -tupln | grep ssh

     



    Если мы видим, что для службы sshd слушается нужный нам порт 22333, или другой который Вы установили, то для того что бы нам подключиться уже используя его, необходимо разрешить его использование из вне.

    Для этого необходимо добавить правило в список iptables:

     

    iptables -I INPUT -p tcp --dport 22333 -m state --state NEW -j ACCEPT

     


    Командой iptables -L можем посмотреть что правило добавилось. 

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

     


    Для Centos 7 используем данную команду:

     

    Сохранение текущих правил iptables:

    
     
    iptables-save > /etc/sysconfig/iptables

    Эта команда сохранит текущие правила iptables в файл /etc/sysconfig/iptables.

     

    Для автоматического восстановления правил при загрузке системы, убедитесь, что у вас установлен пакет iptables-services:

    
     
    yum install iptables-services

     

    Затем включите и запустите службу:

    
     
    systemctl enable iptables
    systemctl start iptables

     

     

    Помните, что если вы используете firewalld, он может конфликтовать с iptables. Если вы решите использовать iptables напрямую, рекомендуется отключить и остановить firewalld:

    
     
    systemctl stop firewalld
    systemctl disable firewalld

     

    service iptables save

     


    Для Ubuntu используем другую команду. Для этого необходимо установить iptables-persistent.

     

    apt-get install iptables-persistent

     


    Если получили ошибку, что нет подходящего пакета или репозитория, обновите репозиторииПосле этого установите обновления. 

     

     

    apt update
    apt upgrade

     


    Если данный пакет установлен, и необходимо сохранить правила:

     

    dpkg-reconfigure iptables-persistent

     


    Во время реконфигурации, ответьте - YES на оба вопроса.

    После этого можно сохранить правила для ipv4:

     

    iptables-save | sudo tee /etc/iptables/rules.v4

     


    Для ipv6:

     

    ip6tables-save | sudo tee /etc/iptables/rules.v6

     


    В случае Если включен firewall добавляем правило для него:

     

    firewall-cmd --permanent --add-port=22333/tcp

     


    И так же перезапускаем службу firewalld:

     

     

    systemctl restart firewalld

     

     

    Отключить аутентификацию по паролю SSH

     

    Для этого правим файл /etc/ssh/sshd_config:

     

    vim /etc/ssh/sshd_config

     

    Ищем строку:

     

    PasswordAuthentication yes

     



    И изменяем ее на:

     

    PasswordAuthentication no


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

     

    systemctl restart ssh


    Теперь можно перезагрузить сервер, и убедится, что вы сделали все верно.

     

    reboot


    Если все сделали верно, то подключение к серверу с новым портом пройдет без "танцев" происшествий.