У меня есть (виртуальный) сервер, на котором установлена минимальная система 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 разбитой исходной системы, завершил восстановление, и теперь я могу снова войти в систему.
Ваша попытка копирования на /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.
, чтобы узнать, запущен ли он.
Если вы переходите к /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.