Я изменил свой порт SSH по умолчанию на моем домашнем сервере (в /etc/ssh/sshd_config
файле) к порту 54747, а затем перезапущен ssh
и sshd
услуги (никогда не уверен , какой из них, так что я сделал и просто , чтобы быть безопасным). Чтобы проверить мою конфигурацию, я вышел из системы и снова вернулся в нее без проблем.
Пару дней спустя я установил apt-обновления, а затем перезагрузил свой сервер. Когда я попытался снова войти в SSH (через порт 54747), я получил ошибку отказа в соединении.
По какой-то причине я попытался использовать SSH для порта по умолчанию, и это сработало! Я вернулся, чтобы проверить sshd_config, но он все еще имел собственный порт. Поэтому я возобновил ssh
и sshd
услуги, и вернулся к «регулярному» поведению (SSH на порт 54747). Я попытался перезагрузиться снова, и соединение снова отказалось ...
Кто-нибудь знает, что я сделал не так?
Дополнительные детали:
- Ubuntu 16.04.2 LTS
- Сервер также используется HTPC, с открытым сеансом (тот же пользователь, что и SSH) на моем телевизоре
- Я использую SSH, используя ключ RSA на моем ноутбуке, и отключил проверку пароля
- Я имел обыкновение перезагружаться
sudo reboot -h now
, но после поиска я обнаружил, что некоторые люди не одобряют его, поэтому я попыталсяsudo reboot
, но без различий
РЕДАКТИРОВАТЬ Последовательность событий:
- Измените порт SSH с 22 на 54747 в
/etc/ssh/sshd_config
- Перезапустите службы ssh и sshd
- Завершить текущий сеанс SSH
- SSH успешно вернулся на порт 54747
- перезагрузка
- Ошибка соединения SSH на порту 54747, но успешно на порту 22
- Перезапустите службы ssh и sshd
- SSH успешно подключен к порту 54747, ошибка подключения к порту 22
- Перезагрузитесь и вернитесь к 6
РЕДАКТИРОВАТЬ 1: netstat
выход
rgo@ATLAS:~$ sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
РЕДАКТИРОВАТЬ 2: service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
РЕДАКТИРОВАТЬ 3: lsof -i | grep ssh
systemd 1 root 46u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
systemd 1 root 49u IPv6 14641 0t0 TCP *:ssh (LISTEN)
sshd 4088 root 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4088 root 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
Для справки: ATLAS - это имя хоста удаленного сервера, 192.168.1.27 - это IP-адрес локальной сети моего ноутбука, и команда была выполнена между шагами 6 и 7.
ufw status
Status: inactive
РЕДАКТИРОВАТЬ 4: ps -ef |grep sshd
root 4088 1 0 22:40 ? 00:00:00 sshd: rgo [priv]
rgo 4202 4088 0 22:40 ? 00:00:00 sshd: rgo@pts/1 sshd
источник
Port 10285
. Google показывает пару результатов для 54747 ... (3) Также SSH-сервер может работать с несколькими портами одновременно. Создайте две отдельные директивы для каждого порта:Port 22
иPort 54747
затем откройте только второй в брандмауэре. (4) Вы можете попробоватьMatch LocalPort
директиву , размещенную в началеsshd_c
.Ответы:
ssh может быть «активирован через сокет» systemd в зависимости от конфигурации, что означает, что изначально systemd устанавливает порт прослушивания, а sshd запускается только при первом подключении клиента. Это должно ускорить время запуска: сервисные демоны запускаются только по требованию.
Однако это означает, что вы также должны настроить systemd для соответствующего порта. Вы найдете конфигурацию системы, в
/lib/systemd/system/ssh.socket
которой спискиListenStream=22
. Чтобы переопределить это, создайте файл/etc/systemd/system/ssh.socket.d/port.conf
(создающий каталогssh.socket.d
при необходимости), который содержит:Измените номер на нужный порт. Первая пустая запись стирает предыдущий по умолчанию, а последующая запись добавляет новый. Это отменяет стандартную поставку
/lib/systemd/system/ssh.socket
и должно быть сделано в дополнение к изменению/etc/ssh/sshd_config
.Затем запустите
sudo systemctl daemon-reload
systemd, чтобы сообщить systemd о ваших изменениях и оsudo systemctl reload ssh
том, был ли ранее запущен демон ssh.источник
/etc/systemd/system/ssh.socket.d/port.conf
игнорируется, и при перезагрузке все еще сбрасывается порт на 22. Соответствует ли имя файла ? Не удалось найти хорошую документацию по переопределениям systemd в Ubuntu ..conf
. См. Systemd-system.conf (5) для получения подробной информации о файлах конфигурации переопределения systemd.systemctl status ssh.socket
чтобы увидеть, если он включен и что он слушает.ListenStream=
строки перед пользовательским портом предотвратило это, не знаю почему. Может быть, это «очищает»ListenStream=22
настройку по умолчанию/lib/systemd/system/ssh.socket
? Странный способ переопределить настройки. Может стоит добавить это в ответ?Проверьте настройки порта в
/etc/ssh/sshd_config
файле. Убедитесь, что вы редактируете как sudo или как пользователь в группе sudo. Все, что вам нужно сделать, чтобы установить порт, это на одном типе линии.Port 54747.
Теперь перезапустить службу ssh, запустивservice sshd restart.
Затем проверить, что ssh прослушивает этот порт, запустивsudo netstat -lntp | grep ssh.
Reboot и протестировать.Также проверьте настройки вашей сети. Если вы находитесь в корпоративной сети, убедитесь, что вы находитесь в правильном VLAN.
источник
Port 22
строку по умолчаниюPort 54747
только. Кроме того, netstat, который вы дали мне, не имел выхода. Я добавил модифицированный в свой OPssh -i key.txt user@ipaddress -p 54747
. Также проверьте, прослушивает ли что-нибудь еще этот порт. Естьsudo lsof -i | grep ssh
. Вы также можете проверить свой брандмауэр, чтобы убедиться, что он ничего не блокирует. Есть:sudo ufw status
.shutdown -r now
. Попробуйте и дайте нам знать результаты. См. Эту статью для справки: askubuntu.com/questions/483670/…sudo reboot -h now
и `sudo reboot`Иногда что-то идет не так. Если бы я был на вашем месте, я бы попробовал с:
источник
cp
Команда на всякий случай, обычно процесс переустановки не затрагивает файлы конфигурации.ssh - это клиентский процесс, который осуществляет арбитраж и поддерживает соединение сеанса пользователя с сервером ssh. sshd - это демон, который работает на сервере ssh для прослушивания и проверки подлинности запросов на подключение ssh.
Файл конфигурации на сервере sshd, который читается при запуске службы sshd (которая требует прав sudo для редактирования)
Служба должна начинаться с
Перезапустить sshd, что потребовало бы повторного чтения файла sshd_config
Чтобы узнать, какой порт слушает демон sshd, а также другую полезную информацию о типе сервера ssh
Выполните эти шаги в указанном порядке:
Перезагрузите сервер SSH
Откройте терминальную сессию на ssh-сервере (не ssh-соединение с ним)
Тип
hostname
Если имя хоста не возвращает имя сервера ssh (в данном случае Atlas), выполните предыдущий шаг правильно.
grep Port /etc/ssh/sshd_config
- запомните номер порта. Должен быть тот, который вы указалиsudo service sshd status
Если статус сообщает, что он активен, работает и прослушивает пользовательский порт, который вы указали, то вы в этом хороши. Если нет, запуск службы может вызывать не измененный вами файл sshd_config, а другой файл конфигурации, который содержит информацию по умолчанию. Если служба не запустилась (говорит, что она не активна и работает, то это другая проблема, чем то, о чем вы спрашивали).
Эти шаги, вероятно, определят причину проблемы, о которой вы спрашиваете.
Для целей тестирования и для простоты: на стороне клиента, из сеанса терминала вы бы ssh на сервер ssh следующим образом
Основываясь на обратной связи с OP, я подозреваю, что sshd не запускается при загрузке, но запускается правильно при вызове вручную. Успешные ssh-соединения через порт 22 вполне могут НЕ соединяться с ssh-сервером, а с чем-то другим (например, с localhost). Чтобы доказать или опровергнуть это, после подключения через тип SSH
Исходя из того, что говорит OP, я предполагаю, что hostname не будет атласом ssh-сервера.
Чтобы дополнительно изолировать это, после перезагрузки сервера ssh, но перед дальнейшими действиями , от сеанса терминала на типе сервера ssh (Atlas)
Если это не удается, как следует, то
Если это не сработает, это подтвердит результаты, полученные при запуске
источник
ssh -p <PORT> <USER>@<IP>
, добавив свой закрытый ключ к агенту.Возможно, вы просто ответили Y, когда apt обнаружил разницу между вашим sshd_config и пакетом. Он спрашивает, хотите ли вы установить версию менеджера пакетов или оставить свою.
источник
Возможные причины, о которых я могу думать
/usr/lib/systemd/system/sshd.socket
очевидно , через файл : https://www.vultr.com/docs/how-to-change-ssh-port-on-coreosисточник
find /etc/ -iname "*ssh*"
чтобы найти больше подсказок.