opened image

Как изменить порт подключения по SSH и отключить авторизацию по паролю

В этой статье мы увидим как изменить стандартный порт подключения 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


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