Как отладить sshd не запускается при запуске на сервере

У меня есть (виртуальный) сервер, на котором установлена ​​минимальная система Ubuntu 10.04. Кажется, я неправильно сконфигурировал sshd, чтобы он не запускался при перезагрузке. Поскольку это сервер, теперь у меня теперь нет доступа к серверу на моем сервере. Любой запрос ssh приводит к следующему:

ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused

И /var/run/sshd.pid не существует.

У меня есть доступ к файловой системе через панель Virtuozzo, установленную поставщиком сервера.

Я не редактировал сценарий запуска /etc/init.d/ssh, но я скопировал его в /etc/rc2.d/ssh в надежде, что это начнет перезапуск ssh.

Я также попытался добавить стартовый вызов к /etc/crontab:

7 * * * * root /usr/bin/touch /root/cron_is_running

8 * * * * root /etc/init.d/ssh start

Я тоже не получаю файл /root/cron_is_running и sshd запустится

Мои логфайлы не обеспечивают большого количества сообщений об ошибках для ssh, fe /var/log/syslog показывает только много файлов named при запуске и некоторые вещи обновления mysql, которые, безусловно, не связаны.

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

Обновление: изменение сценария в /etc/rc2.d/ssh до /etc/rc2.d/S90ssh не имело никакого эффекта. /var/log/auth.log не содержит строк, которые намекают на попытку запуска ssh, но они полны этих строк:

Обновление 2: Как и было предложено, я также попытался добавить /usr/sbin/sshd к /etc/rc.local. Но тест с touch /tmp/test кажется, что этот файл не выполняется, несмотря на то, что флаг + x установлен. Я также попытался добавить sleep 10 в начале скрипта rc.local, потому что в другом месте предлагалось, что этот скрипт имеет проблемы параллелизма.

Окончательное обновление Спасибо за ответы ниже. Они были огромной помощью в устранении недостающего запуска sshd в каталогах rcX.d/. Последнее исправление заключалось в том, чтобы начать «Ремонт» с панели Virtuozzo, это устанавливает исходную систему как часть файловой системы системы восстановления с исходными настройками сети. Я могу войти в систему с помощью ssh. Я скопировал рабочие конфигураторы ssh из системы восстановления поверх конфигураций ssh ​​разбитой исходной системы, завершил восстановление, и теперь я могу снова войти в систему.

1
задан 5 December 2011 в 22:58

2 ответа

Ваша попытка копирования на /etc/rc2.d/ssh была почти права.

Чтобы сценарий в /etc/rcX.d запускался при запуске, его нужно называть SxxZZZ, где S буквенный S (для Start, вы также можете использовать K для Kill во время выключения), xx - это число, представляющее, где в порядке запуска он запускает (01 первый, 99 последний) и ZZZ это имя вашего скрипта.

Итак, вам нужно что-то вроде S90ssh. Число не критично важно, 90 должно быть в порядке, сеть будет к тому времени и т. Д.

Обратите внимание, что также нужно будет установить исполняемый файл - я не знаю, установлена ​​ли система использование позволит вам сделать это? Надеемся, что копирование существующего скрипта ssh и просто переименование сохранят исполняемые биты.

В качестве альтернативы /etc/rc.local можно использовать в качестве универсального универсального сценария запуска. Просто отбросьте /usr/sbin/sshd там до выхода, чтобы sshd был запущен в качестве крайней меры.

Дайте этому вопрос и обновите свой вопрос, если у вас все еще есть проблемы:)

Вы можете проверить /var/log/auth.log (/var/log/syslog не содержит сообщений sshd по умолчанию) для строки, такой как:

sshd[18838]: Server listening on 0.0.0.0 port 22.

, чтобы узнать, запущен ли он.

2
ответ дан 25 May 2018 в 16:14
  • 1
    кажется rc.local не выполняется. Еще спасибо за вашу помощь! Я ценю, что вы нашли время. – Yashima 5 December 2011 в 19:27
  • 2
    Я могу установить права доступа к файлам и выполнить его. Я проверил снова сейчас, разрешения установлены на: -rwxr-xr-x – Yashima 5 December 2011 в 19:40
  • 3
    sudo /usr/sbin/sshd или sudo service ssh start не запускается и работает, если у вас есть оболочка? – Caesium 5 December 2011 в 20:55
  • 4
    Я починил это. Он был сломан ssh_configs. Я уточню свой вопрос. В любом случае оба ответа были огромной помощью – Yashima 5 December 2011 в 22:54
  • 5
    Хорошо, тест rc.local touch был немного красной селедкой, тогда, извините, что - интересно, почему это не сработало. В любом случае все хорошо, что хорошо заканчивается :) – Caesium 5 December 2011 в 23:27

Если вы переходите к /etc/init.d/ типу sudo service ssh start, и он приходит чистым (без ошибок), вам нужно всего лишь запустить sudo update-rc.d ssh defaults, чтобы сделать сервис на правильных уровнях и быть убитым, когда ваша система будет закрыта .

Вы также можете сделать это вручную, скопировав скрипт и переименовав его, либо указав, что он должен быть остановлен или запущен на этом уровне. Вот файлы, созданные с помощью команды update-rc.d:

   /etc/rc0.d/K20ssh -> ../init.d/ssh
   /etc/rc1.d/K20ssh -> ../init.d/ssh
   /etc/rc6.d/K20ssh -> ../init.d/ssh
   /etc/rc2.d/S20ssh -> ../init.d/ssh
   /etc/rc3.d/S20ssh -> ../init.d/ssh
   /etc/rc4.d/S20ssh -> ../init.d/ssh
   /etc/rc5.d/S20ssh -> ../init.d/ssh

. Таким образом, простой cp /etc/init.d/ssh /etc/rc0(1,6).d/K20ssh и cp /etc/init.d/ssh /etc/rc2(3,4,5).d/K20ssh должен делать трюк. (обратите внимание, что вы должны запустить cp для каждой папки rc.d, эта команда является просто примером того, какое имя следует передать скопированным файлам).

K20ssh запускается, когда машина остановка и S20ssh - это имя сценария для уровней, на которых он должен работать.

S и K указывают на запуск или убой, а число после него указывает порядок, на котором скрипты внутри папки будут выполняться, меньшее число запустится раньше, а более высокое число запустит его позже, в случае ssh он должен действительно не выглядеть, а 20 - по умолчанию, назначенным update-rc.d.

1
ответ дан 25 May 2018 в 16:14
  • 1
    Как я могу реплицировать update-rc.d путем редактирования или копирования файлов? Спасибо за помощь :) – Yashima 5 December 2011 в 18:28

Другие вопросы по тегам:

Похожие вопросы: