Каков риск обновления по SSH?

75

Когда я бегу

sudo do-release-upgrade

через ssh я получаю следующее сообщение.

Этот сеанс работает под ssh. Не рекомендуется
выполнить обновление по SSH в настоящее время, потому что в случае сбоя
труднее восстановить.

Если вы продолжите, на порту будет запущен дополнительный демон ssh
'9004'.
Вы хотите продолжить?

Каков реальный риск обновления по ssh? Как дополнительный демон ssh помогает смягчить это?

Пересекать
источник

Ответы:

56

Я бы порекомендовал запустить сеанс экрана на сервере и запустить обновление на экране - таким образом, если ваш сеанс SSH прервется (по какой-либо причине), процесс обновления не остановится.

Screen - это программа, которая позволяет использовать постоянные терминалы на компьютере. Таким образом, вы можете начать сеанс экрана, и пока компьютер находится в этом сеансе экрана (и его история, запущенные программы и т. Д.) Будет продолжать работать, хотя на машине нет ни одного пользователя. Он был разработан в первые дни, чтобы обеспечить многооконный текстовый терминал до дней X Server. Вы можете установить его с помощью APT:

sudo apt-get install screen

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

Марко Чеппи
источник
1
Экран является отличным инструментом для этой ситуации.
Райан Томпсон
7
Кажется, что do-release-upgrade(так как точный) выполняется автоматически screen.
Ман
2
Экран больше не доступен, и по какой-то причине он не работает с TMUX. Возвращает эту ошибку: === Команда прервана со статусом выхода 1 (среда, 19 октября, 21:14:13 2016) ===
Гман Смит,
screen -dmS do-release-upgrade-> screen -rпереключиться на рабочий экран -> Ctrl + A, Ctrl + D, чтобы оставить экран работающим в фоновом режиме и вернуться к основному экрану
Райан Аллен
83

Решение @ Marco-Ceppi уже интегрировано в do-release-upgrade.

При запуске do-release-upgradeон запускает сеанс экрана автоматически. Если ваш ssh-сеанс отключен, вы можете продолжить установку. Все, что вам нужно сделать, это открыть новый сеанс SSH и запустить do-release-upgradeснова. Он подключится к вашей предыдущей установке.

Второй риск, на который указывает @ sepp2k, заключается в том, что ваш sshd-сервер может нуждаться в обновлении, и, возможно, он может перезапуститься неправильно. Поэтому программа обновления запускает второй демон, на указанном порту. Вы должны проверить конфигурацию вашей сети, чтобы убедиться, что у вас есть доступ через этот порт, прежде чем возобновить.

Удачи.

Более того, do-release-upgradeзапуск сеанса экрана сам по себе запускается под учетной записью root, поэтому, если ваш собственный сеанс экрана завершится сбоем, вы сможете восстановить, запустив sudo screen -x, если (по какой-то причине) команда do-release-upgradeне восстановит его сама, что кажется обычным.

jarondl
источник
1
Вы знаете, с какой версии Ubuntu это было? Я пытаюсь выполнить обновление с 9.10, и после запуска upgrade ( sudo do-release-upgrade) и ответа «Да», я могу подключиться к ssh через порт 9004, но screenпри попытке сеанс не указан sudo screen -list . (PS Я еще не прошел этап загрузки.)
mgd
7
После обновления с 9.10 до 10.04 LTS (там, где do-release-upgradeне начался сеанс экрана), я обновляюсь с 10.04 LTS до 12.04 LTS и теперь do-release-upgradeтеперь автоматически запускает сеанс экрана.
мгд
2
Таким образом, в основном, do-release-upgradeпозаботьтесь обо всем перед этим, затем: 1) вы можете восстановить соединение со сломанного ssh путем повторного запуска do-release-upgradeпосле повторной регистрации и 2) вы можете повторно войти в систему после неудачного обновления sshd через порт, указанный в начале, do-release-upgrade, Это оно ?
Juh_
5
Экран sudo -x спас мне жизнь! Благодарю.
Фелипе
4
Тогда почему предупреждающее сообщение все еще там? Звучит очень зловеще.
Джахмик
17

Если в рамках обновления установлена ​​новая версия демона ssh, он будет перезапущен. Если обновление по какой-то причине нарушает работу демона, оно не сможет запуститься снова, и у вас больше не будет возможности войти в систему.

Запуская отдельный sshd, который не обрабатывается системой init и, следовательно, не будет перезапущен во время обновления, гарантируется, что старая версия sshd все еще будет работать, даже если новая версия не запускается. Таким образом, вы все еще можете войти в систему и посмотреть, что вызвало поломку демона.

sepp2k
источник
1
Я думаю, что более уместно, что при перезапуске демона ваше обновление, скорее всего, будет завершено незавершенным, поскольку процесс выполняется в сеансе ssh.
Малабарба
3

У меня никогда (пока) не было проблем с этим, хотя я обновил только полдюжины или около того коробок таким образом. Просто если что-то пойдет не так, дополнительный демон SSH может быть вашей единственной надеждой избежать посещения (или использования любых вариантов удаленной переустановки, которые у вас есть).

Плачь Хавок
источник