Как отладить 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, f.e. /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 в 20:58

2 ответа

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

Для сценария в /etc/rcX.d чтобы быть выполненным при запуске, это нужно назвать SxxZZZ где S литерал S (для Start; можно также использовать K для Уничтожения во время завершения работы), 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
ответ дан 5 December 2011 в 20:58

Если вы переходите к типу /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 указывают start или kill , а число после него указывает порядок, в котором будут запускаться скрипты внутри папки, меньшее число заставляет запускаться раньше и более высокое число заставляет его запускаться позже, в случае ssh оно должно действительно не быть mather, а 20 его значением по умолчанию, назначенным update-rc.d.

0
ответ дан 5 December 2011 в 20:58

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

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