华人澳洲中文论坛

热图推荐

    oracle virtual box 外面的vm

    [复制链接]

    2021-6-4 12:15:04 7011 10

    之前vmware用的多些,比来用了下oracle virtual box, 外面运转的redhat vm,  ssh本机连过来做试验。  晚上的时分,间接把电脑睡眠, 次日唤醒电脑后, ssh的session竟然不停, 这是怎么回事阿?

    ssh是基于tcp的衔接,需求keepalive的吧, 为何停了一晚,一点事没用?

    全部回复10

    fong_08 发表于 2021-6-4 11:00:01

    fong_08 沙发

    2021-6-4 11:00:01

    我也有时分遇到过相似的,不是virtual box, 是其余的虚构机。

    等候大神解惑
    ollohid 发表于 2021-6-4 11:08:31

    ollohid 板凳

    2021-6-4 11:08:31

    ssh有不停从新衔接的设置。

    要看默许设置。
    车头 发表于 2021-6-4 11:18:15

    车头 地板

    2021-6-4 11:18:15


    不是从新衔接, 从新衔接会停在等候用户名明码那。

    这个就是完彻底全在原来session那里, 敲一半的命令,补全了,间接运转,超级神奇。
    2973499 发表于 2021-6-4 11:29:39

    2973499 5#

    2021-6-4 11:29:39

    TMOUT=0 就不停开,  能够配置TMOUT=30.
    香@香 发表于 2021-6-4 11:33:15

    香@香 6#

    2021-6-4 11:33:15


    觉得不是这个原因。


    这电脑休眠, 关于ssh 客户端来讲,根本等于拔网线了 TMOUT只是shell级别的variable, 我这状况觉得是ssh上面的tcp就不停。
    G46 发表于 2021-6-4 11:45:44

    G46 7#

    2021-6-4 11:45:44

    我的了解,抛砖引玉。

    首先TCP协定是没有在一段时间内假如没有传输数据就断开衔接这类设计的。假如客户端和办事器之间没有其余装备骚扰的话,实践上只有单方违心,一个TCP衔接能够永久存活上来——即便这期间彻底没无数据交互也不妨事。固然理想糊口中单方之间总有一些两头装备有超时的逻辑。

    宿主机和虚构机之间的衔接根本上能够以为是这类无搅扰的现实状况了。所以休眠再唤醒,对TCP的影响能够以为没有。

    而后ssh的keepalive逻辑根本上是这样:假如客户端有一段时间没消息,就发一个空包过来;假如客户端对这个包也没响应,就持续发,直到发送的次数够多了就断开衔接。然而这里顺序也不会看客户端多久没有消息了。所以虚构机和宿主机一同唤醒的时分,ssh办事器发现有个衔接曾经十几个小时没发货色过去了,就发了个空包试试,后果发现有反映!固然能够持续任务啦。
    自行车 发表于 2021-6-4 11:50:05

    自行车 8#

    2021-6-4 11:50:05


    仍是不太明确, 然而觉得ssh应该是在tcp上,应该算运用层了。

    tcp仍是在上面一层,并且tcp自身本人也有keepalive,一段时间假如没无数据传输,应该就开始keepalive,好像默许2小时,至多9次?  那实践上能够坚持18个小时没有反映?

    不太肯定,只是ubuntu物理机,vmware里的各种虚构机,ssh我都历来没遇到过这么时间的,都是10几20分钟,根本就断了。

    看看这个,能够到18小时

    Keep-Alive Process
    There are three configurable properties that determine how Keep-Alives work. On Linux they are1:

    tcp_keepalive_time
    default 7200 seconds
    tcp_keepalive_probes
    default 9
    tcp_keepalive_intvl
    default 75 seconds
    The process works like this:

    Client opens TCP connection
    If the connection is silent for tcp_keepalive_time seconds, send a single empty ACK packet.1
    Did the server respond with a corresponding ACK of its own?
    No
    Wait tcp_keepalive_intvl seconds, then send another ACK
    Repeat until the number of ACK probes that have been sent equals tcp_keepalive_probes.
    If no response has been received at this point, send a RST and terminate the connection.
    Yes: Return to step 2

    思思蓝_Y 发表于 2021-6-4 12:02:27

    思思蓝_Y 9#

    2021-6-4 12:02:27

    我感觉多是休眠的一个特例。   也就是你的native host + vm 同时 pause/sleep了。

    simon 发表于 2021-6-4 12:07:51

    simon 10#

    2021-6-4 12:07:51


    这个觉得靠谱
    小风 发表于 2021-6-4 12:15:04

    小风 11#

    2021-6-4 12:15:04


    明天又领会了一把,应该你这个就是谜底了。

    不仅是oracle vb,  vmware明天也是如斯, 我是host本机putty ssh到 guest 外面, 晚上睡觉的时分,我都是间接按电源,条记本休眠, 次日电脑关上, putty和ssh session还都是活的。  觉得的确是server,client一同睡眠,醒来, 还都活着。

    我子细想一想之前睡眠之后putty就死掉的状况是我putty都是先衔接到车库里的server,再回来到本机 guest os外面,这类状况一睡眠,确定session就死掉了。  过后vmware guest和host不克不及间接互联, 就周转一下, oracle vb 下guest和host直连。

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    新手上路
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题1

    帖子13

    积分39

    图文推荐