Почему перезагрузка сервера под управлением Ubuntu 14.04 выдает ошибки «Отказано в соединении»?
Я вижу, ssh: connect to host <IP-address-here> port 22: Connection refused
но только для 14.04 и только после перезагрузки. Я использую 12.04 Desktop дома. Как мне устранить это?
Чтобы прояснить вопрос, вот что у меня работает или не работает:
- SSH в новой установке 12.04> выход> SSH снова> работает
- SSH в новой установке 12.04> перезагрузка> SSH в снова> работает
- SSH в новой установке 14.04> выход> SSH снова> работает
- SSH в новой установке 14.04> перезагрузка> SSH снова> Соединение отказано
У меня проблема уникальна для 14.04 и возникает только после перезагрузки. До этого у меня было несколько серверов, работающих под 12.04, и все по-прежнему работает отлично. У меня новый сервер, на котором я хочу использовать 14.04, и я хочу понять, что происходит не так. Какие-либо предложения?
Вот что я пробовал до сих пор:
sudo traceroute -p 22 -T <IP-address-here>
Traceroute работает нормально, я получаю ответ от сервера по SSH-порту 22.
initctl list
...
ssh start/running, process 23371
...
Похоже, ssh на сервере 14.04 настроен на запуск при загрузке (как и ожидалось).
tom@Desktop:~$ ssh -vvv root@<IP-address-here>
OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to <IP-address-here> [<IP-address-here>] port 22.
debug1: connect to address <IP-address-here> port 22: Connection refused
ssh: connect to host <IP-address-here> port 22: Connection refused
Редактировать: Вот весь системный журнал с недавно созданной машины . Я создал его, выполнил reboot now
команду SSH и выполнил команду, а затем получил сообщение об отказе в соединении после ожидания его перезагрузки и попытки выполнить SSH во второй раз. Жесткая перезагрузка через панель управления хостингом, и теперь SSH-соединение снова работает.
Ответы:
Быстрый ответ:
SSH не проблема. Проблема с командой, используемой для перезагрузки: не делайте
reboot now
, делайтеreboot
илиshutdown -r now
перезагружайте систему.Синтаксис команды ( с 13.04 ):
REBOOTCOMMAND
Никогда не существовало. В 12.04 вашnow
был просто проигнорирован, но теперь он используется ... И он ломает все.Длинный ответ с результатами моих тестов и объяснениями:
У меня похожая проблема с некоторыми серверами, работающими под управлением 14.04 И в VPS (размещенными у французского поставщика OVH - под управлением OpenVZ) И при работе
reboot now
внутри самого сервера.Как и вы, я выполнил команду
reboot now
из консоли (вошел в систему с помощью SSH). Через несколько секунд после нажатия RETURNмой сеанс автоматически отключается. Как и вы, мне никогда не удавалось повторно подключиться к серверу через SSH после выполнения этой команды.Итак, я решил открыть консоль KVM, предоставленную OVH. (эмуляция прямого доступа с использованием клавиатуры и экрана на физическом сервере для этого типа виртуального сервера).
Я смог подключиться к своей машине и увидел, что она входит в однопользовательский режим, ожидая, пока я нажму CTRL+ Dдля продолжения или введите пароль root для перехода в режим обслуживания. Я нажал комбинацию клавиш, чтобы продолжить, чтобы продолжить процесс, а затем снова смог войти в мою систему. После того, как я запустил
uptime
, я удивился, увидев, что время безотказной работы составляло не 2 или 3 минуты, а, тем не менее, много дня:reboot now
выполнение в Ubuntu 14.04 VPS на самом деле не перезагружается, а просто просит перейти в однопользовательский режим!Исходя из этого, я научился никогда не запрашивать перезагрузку из моего VPS, а запрашивать ее с помощью команды, предоставленной в интерфейсе управления хостера.
Таким образом, нет проблем с вашей установкой SSH. Проблема в том, когда вы печатаете
reboot now
. Фактически, я также проверил это позже, если бы вы ввелиreboot
(просто слово, без опции), он бы сделал то, что вы намеревались сделать: перезагрузите сервер.Использование
reboot
с аргументом (со страницы руководства) вызывает командуshutdown
с заданными аргументами. И действительно, если я выполняюshutdown now
, у меня такое же поведение: система не перезагружается, она переходит в однопользовательский режим.Примечание: похоже, что это предполагаемое поведение, поскольку сообщение, появляющееся на экране после нажатия клавиши при выполнении этой команды, говорит что-то вроде:
Режим обслуживания или однопользовательский режим, это то же самое, уровень выполнения с отметкой больше, чем оболочка, нет сети, нет сетевых процессов, ...
Это может сбивать с толку, но обратите внимание, что правильное использование
shutdown
, например, это:shutdown -h now
остановить систему сейчас илиshutdown -r now
перезагрузить ее сейчас. Я не знал, чтоshutdown now
это переведет систему только в однопользовательский режим. Я обычно делаюinit S
для этого.источник
sudo reboot now
отлично работает в 12.04 иuptime
соответствует последнему разу, когда я это делаю. Очень интересное изменение для 14.04, хотя.sudo reboot --single-user
получить эту функциональность ???Я могу опоздать, и это может быть очевидно, но для меня сработала проверка файла конфигурации
/etc/ssh/sshd_config
: запуск демона с помощью/etc/init.d/ssh start
или любой другой комбинации показал, что служба запущена, хотя это не так, но если я запускаю исполняемый файл с по его абсолютному пути (в моем случае/usr/sbin/sshd
) я увидел, что в конце файла конфигурации был добавлен «0B», что вызвало ошибку при запуске, устранение проблемы решило проблему.источник
Другая потенциальная причина -
ufw
потеря конфигурации правила порта SSH. Это происходило со мной по крайней мере один или два раза, когда после применения обновлений и перезагрузки конфигурация брандмауэра блокировала мне получение доступа к серверу. Использование консоли VPS моего хостинг-провайдера позволило мне выйти на компьютер и диагностировать проблему. Пример ниже, показывающий проблему (т.е. нет записи для порта 22):Повторное включение порта следующим образом:
источник
Для моей системы проблема заключалась в том, что сценарий ssh init
/etc/init.d/ssh
был единственным, проверяющим наличие начальной версии init.Так
/etc/init.d/ssh
что не начинается,ssh,
потому что он верит, что он будет начатupstart
.В моем случае выскочка не запускается из-за моей конкретной конфигурации:
В нем была правильная конфигурация
/etc/init/ssh.conf
, но также был/etc/init/ssh.override
файл, содержащийmanual
, что означает, чтоssh
ожидается запуск вручную.Этот файл был создан
get-remnux.sh
установочным скриптом.Запуск вручную или удаление
/etc/init/ssh.override
файла решает проблему.источник