Вопрос или проблема
Я хочу изменить порт ssh с 22 на 2800. Я попытался изменить /etc/ssh/ssh_config
, убрал # с строки Port и изменил номер на 2800. После выполнения команды: service ssh restart
соединение продолжило работать. Когда я попытался подключиться с порта 2800, мне отказали.
Содержимое /etc/ssh/ssh_config
выглядит так: Убраны закомментированные строки
Host *
Port 2800
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
Команда service ssh status
дает следующий вывод:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2017-09-22 20:31:45 IRST; 1s ago
Main PID: 1825 (sshd)
Tasks: 1
Memory: 724.0K
CPU: 5ms
CGroup: /system.slice/ssh.service
└─1825 /usr/sbin/sshd -D
Sep 22 20:31:45 GoodMind systemd[1]: Starting OpenBSD Secure Shell server...
Sep 22 20:31:45 GoodMind sshd[1825]: Server listening on 0.0.0.0 port 22.
Sep 22 20:31:45 GoodMind sshd[1825]: Server listening on :: port 22.
Sep 22 20:31:45 GoodMind systemd[1]: Started OpenBSD Secure Shell server.
Я пробовал и другие порты. Но статус остается прежним. Что я делаю не так?
Измените порт не в файле:
/etc/ssh/ssh_config
, а в
/etc/ssh/sshd_config
(файл с буквой d
, означающей “демон”)
Просто отредактируйте это изменение, раскомментируйте и обновите строку
#Port 22
Не забудьте перезапустить службу, как вы это сделали с
service ssh restart
Ваши настройки правильные, но вы изменили их в неправильном конфигурационном файле. Это должен быть /etc/ssh/sshd_config
, и вам, возможно, нужно будет перезапустить службу SSH и открыть новый порт, на котором слушает ваш SSH-сервер.
Для этого выполните следующие команды:
sudo service ssh restart
илиsudo systemctl restart sshd.service
- Откройте порт в брандмауэре
sudo iptables -I INPUT -p tcp --dport 2800 -j ACCEPT
.
Этого должно быть достаточно, чтобы принимать подключения на порту 2800
. Вы также можете проверить, на каких портах ваша машина слушает, с помощью netstat -lt4
, и вы должны увидеть строку, похожую на
tcp 0 0 *:2800 *:* LISTEN
Дайте знать, если это сработает!
Без лишних слов, решение следующее:
Убедитесь, что вы открыли несколько терминалов, подключенных к вашему серверу, чтобы не заблокировать себя.
- Уберите комментарий с ключа
Port
в/etc/ssh/sshd_config
(не/etc/ssh/ssh_config
) и измените его на новый порт. - Измените порты прослушивания в
/etc/systemd/system/ssh.service.requires/ssh.socket
со старого порта (например,22
) на новый порт и оставьте другие конфигурации без изменений. - Разрешите порт в вашем брандмауэре:
sudo ufw allow <port>/tcp
- Перезапустите демон:
sudo systemctl daemon-reload
. - Перезапустите ssh:
sudo systemctl restart ssh
и перезапустите сокетsudo systemctl restart ssh.socket
- Проверьте изменения:
sudo ss -tlnp | grep ssh
(должен показать ваш новый порт). - Проверьте соединение в новом терминале:
ssh user@<ip> -p <port>
. Теперь это должно работать без ошибок!
Однако, если вы столкнулись с ошибками при запуске ssh
(как и я, потратив часы, пытаясь выяснить, почему и почти заблокировав себя на сервере), просто попробуйте переустановить ssh, повторите вышеуказанные шаги, и все будет в порядке!
Ответ или решение
Для изменения порта SSH на сервере Ubuntu 16.04 вам необходимо внести изменения в правильный конфигурационный файл и выполнить несколько команд для правильной настройки. Ниже представлен пошаговый процесс, который позволит вам успешно сменить порт SSH и избежать блокировки доступа.
1. Определите правильный конфигурационный файл
Многие пользователи путают файл конфигурации SSH. Вам необходимо изменять файл /etc/ssh/sshd_config
, а не /etc/ssh/ssh_config
. Первый файл относится к настройкам демона SSH, тогда как второй — это конфигурация клиента.
2. Редактирование конфигурационного файла
Откройте файл /etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
Найдите строку, начинающуюся с #Port 22
, уберите символ #
и измените порт на 2800:
Port 2800
Убедитесь, что вы не изменили другие параметры, которые могут повлиять на работу SSH.
3. Настройка брандмауэра
Перед перезапуском сервиса необходимо открыть новый порт в брандмауэре. Если вы используете ufw
, выполните следующую команду:
sudo ufw allow 2800/tcp
Если у вас установлен iptables
, используйте такую команду:
sudo iptables -I INPUT -p tcp --dport 2800 -j ACCEPT
4. Перезапуск службы SSH
После внесения изменений и настройки брандмауэра перезапустите SSH:
sudo systemctl restart ssh
5. Проверка статуса службы
Проверьте статус службы для уверенности, что она слушает на новом порту:
sudo ss -tlnp | grep ssh
Вы должны увидеть строку, подобную следующей, с вашим новым портом:
tcp LISTEN 0 128 *:2800 *:* users:(("sshd",pid=1825,fd=3))
6. Тестирование подключения
Используйте новое соединение для тестирования:
ssh user@<IP-адрес> -p 2800
Обязательно открыйте несколько терминалов перед внесением изменений, чтобы избежать потери доступа к серверу.
Дополнительные советы
Если вы столкнулись с ошибками при перезапуске SSH или не можете подключиться, попробуйте переустановить SSH:
sudo apt-get remove --purge openssh-server
sudo apt-get install openssh-server
После этого повторите вышеперечисленные шаги.
Следуя этой инструкции, вы сможете успешно изменить порт SSH на вашем сервере, обеспечив дополнительный уровень безопасности и доступности вашего ресурса.