问题描述
当我跑
sudo do-release-upgrade
在ssh上,我收到以下消息。
This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.
If you continue, an additional ssh daemon will be started at port
'9004'.
Do you want to continue?
升级ssh的真正风险是什么?附加的ssh守护程序如何帮助缓解这种情况?
最佳解决思路
我建议做的是在服务器上启动一个屏幕会话并在屏幕上运行升级 – 这样如果您的SSH会话丢失(无论出于何种原因),升级过程将不会停止。
Screen是一个允许机器上持久终端的程序。所以你可以开始一个屏幕会话,只要机器在那个屏幕会话上(它的历史,运行程序等)将继续运行,虽然没有一个用户在机器上。它是在早期设计的,在X Server之前提供multi-windowed文本终端。您可以使用APT安装它:
sudo apt-get install screen
因此,您可以进入服务器,启动屏幕,启动升级过程,而不必担心因为丢失了Internet连接或计算机崩溃而导致的升级。
次佳解决思路
@ Marco-Ceppi的解决方案已集成到do-release-upgrade
中。
运行do-release-upgrade
时,它会自动启动屏幕会话。如果您的ssh会话断开连接,则可以继续安装。您所要做的就是打开一个新的ssh会话,然后再次运行do-release-upgrade
。它将重新连接到您之前的安装。
@ sepp2k指出的第二个风险是你的sshd服务器可能需要升级,它可能无法正确重启。因此,升级程序在指定的端口运行第二个deamon。在恢复之前,您应检查网络配置以确保您可以通过此端口进行访问。
祝你好运。
此外,screen-session do-release-upgrade
自身在root帐户下运行,因此如果您自己的screen-session崩溃,您将能够通过运行sudo screen -x
进行恢复,如果(由于某种原因)命令do-release-upgrade
本身无法恢复它,似乎很常见。
第三种解决思路
如果在升级过程中安装了新版本的ssh守护程序,则将重新启动该守护程序。如果由于某种原因更新破坏了守护程序,它将无法再次启动并且您无法再登录到该计算机。
通过启动一个单独的sshd,它不由init系统处理,因此在升级过程中不会重新启动,确保即使新版本无法启动,旧版本的sshd仍将继续运行。因此,您仍然可以登录系统并查看导致守护程序崩溃的原因。
第四种思路
我从来没有(但)做过这样的问题,虽然我只是升级了六个左右这样的盒子。只是如果出现问题,额外的SSH守护程序可能是您避免访问(或使用您拥有的任何远程re-install选项)的唯一希望。