Google compute engine 重新启动GCE实例后ssh连接超时

Google compute engine 重新启动GCE实例后ssh连接超时,google-compute-engine,Google Compute Engine,有人能告诉我为什么在重新启动Google计算引擎实例后,ssh连接超时了吗。我通过sudo reboot和Google Compute Engine Console重新启动实例,两者都是这样做的。当操作系统关闭以重新启动时,所有网络连接都会关闭,包括SSH连接。从客户端看,这可能看起来像是连接超时 与布赖恩的答案略微正交。要优雅地重新启动GCE虚拟机,您可以使用: gcutil resetinstance <instancename> gcutil重置实例 当您使用gcutil r

有人能告诉我为什么在重新启动Google计算引擎实例后,ssh连接超时了吗。我通过sudo reboot和Google Compute Engine Console重新启动实例,两者都是这样做的。

当操作系统关闭以重新启动时,所有网络连接都会关闭,包括SSH连接。从客户端看,这可能看起来像是连接超时

与布赖恩的答案略微正交。要优雅地重新启动GCE虚拟机,您可以使用:

gcutil resetinstance <instancename>
gcutil重置实例

当您使用
gcutil resetinstance
时,它的作用与按下物理主机上的电源按钮相同。这与例如sudo reboot不同,因为前者不会让操作系统有机会执行任何关机操作(如关闭打开的套接字、刷新缓冲区等),而后者会有序关机

如果主机仍然可以使用ssh,您可能更愿意登录实例以重新启动,而不是使用
gcutil resetinstance
resetinstance
(或GUI中的“重新启动实例”按钮)是一种硬重置,它允许您从内核崩溃或SSH故障中恢复

更详细地说:

在操作系统启动的重新启动过程中(如
sudo reboot
),操作系统执行许多清理步骤,然后移动到运行级别6(重新启动)。这将导致运行
/etc/init.d
中的所有脚本,然后正常关闭。在正常关机期间,
sshd
将被关闭
sshd
可以捕获kill信号以关闭其所有打开的插槽。关闭套接字将导致发送一个
FIN
TCP数据包,开始有序的TCP拆卸(“ssh客户端中的连接关闭”消息)。或者,如果
sshd
只是退出,内核将在所有打开的TCP套接字上发送一个
RST
(重置)数据包,这将在您的ssh客户端上产生一条“连接重置”消息。关闭所有进程后,内核将确保页面缓存中的所有脏页都刷新到磁盘,然后执行两个或三个机制中的一个来触发BIOS重新启动。(ACPI、键盘控制器或三重故障。)


触发外部重置时(例如,通过
resetinstance
API调用或GUI),VM将立即进入最后一步,操作系统将没有机会执行上述任何正常关机步骤。这意味着您的ssh客户端将不会收到上面所述的
FIN
RST
数据包,并且只会在远程服务器停止响应时注意到连接关闭。(“连接超时”)

感谢Brian Dorsey、E.Anderson和vgt回答我的问题。问题是另一个。以前每次重置连接时,我都会在“eth0”接口和名为“br0”的新brigde接口之间使用brigde util实用程序建立以太网桥。通过
sudo reboot
或GCE控制台重置实例后,ssh连接停止工作


但是如果我没有打开以太网桥,实例重启两种方法都可以。

如果实例映像是CentOS,请尝试删除selinux

sudo yum remove selinux*

你好。很高兴你找到了解决方案。请详细说明您为解决问题所采取的步骤。我面临着同样的问题,我不知道如何复制你所做的。