V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
alangz
V2EX  ›  DevOps

如何保持 SSH 连接不断开

  •  
  •   alangz · Sep 23, 2015 · 12575 views
    This topic created in 3883 days ago, the information mentioned may be changed or developed.

    我使用 iTerm2 ,使用 ssh 命令登录远程服务器。在电脑休眠的时候, ssh 连接会断开。我想让 ssh 连接能保持不断开,是否办法能做到?

    41 replies    2016-09-13 23:23:38 +08:00
    Theo14
        1
    Theo14  
       Sep 23, 2015
    不如禁止休眠。。。
    GG2
        2
    GG2  
       Sep 23, 2015   ❤️ 1
    mosh
    xiaoyao9933
        3
    xiaoyao9933  
       Sep 23, 2015
    1. 如果非要保持不断开,可将 sshd client 和 server 的 alive 时间都调的非常大,我不知道可不可以设置为无限。我没这么试过,不清楚是否起作用。不推荐这种做法,因为连接可能确实会假死。
    2. 为什么不用 tmux 或者 screen 呀?
    xiaoyao9933
        4
    xiaoyao9933  
       Sep 23, 2015
    @GG2 发现一个好东西。。
    Theo14
        5
    Theo14  
       Sep 23, 2015
    @GG2 你说的这个不错哦
    simpx
        6
    simpx  
       Sep 23, 2015
    1. 用 mosh

    2. 用 ssh + screen 的办法,每次 screen -x 到之前的 session 。

    目前我使用的是方案二,比较通用,不用装一个 mosh
    Tink
        7
    Tink  
    PRO
       Sep 23, 2015
    screen 或者 mosh
    lucifer9
        8
    lucifer9  
       Sep 23, 2015
    autossh + screen
    yuewolf
        9
    yuewolf  
       Sep 23, 2015
    screen 感觉更适合,无需装东西,切一下即可
    zts1993
        10
    zts1993  
       Sep 23, 2015
    autossh
    tracyone
        11
    tracyone  
       Sep 23, 2015
    也可以用 tmux 哦,这样就不会打断正在运行的远程进程了
    alangz
        12
    alangz  
    OP
       Sep 23, 2015
    之前用 tmux ,不太习惯,我试试 mosh
    zhouquanbest
        13
    zhouquanbest  
       Sep 23, 2015
    mosh 才是真正意义上的不断
    其他都是重连

    虽然其实都是一回事
    clino
        14
    clino  
       Sep 23, 2015
    ConnectTimeout 15
    ConnectionAttempts 3
    ServerAliveInterval 20
    ServerAliveCountMax 5
    调整这些参数看看有没有什么帮助
    oska874
        15
    oska874  
       Sep 23, 2015
    @zhouquanbest 为什么说 mosh 是真正的不断?电脑休眠了, ssh 肯定都断了。
    tmdwex06895
        16
    tmdwex06895  
       Sep 23, 2015
    推荐 mosh ,非常赞。
    yaxin
        17
    yaxin  
       Sep 23, 2015
    竟然没有人提 ssh 的共享回话

    在~/.ssh/config 中添加

    Host *
    ControlMaster auto
    ControlPath ~/.ssh/%h-%p-%r
    ControlPersist 4h
    zhangwei1996
        18
    zhangwei1996  
       Sep 23, 2015
    screen 神器。
    cloudop
        19
    cloudop  
       Sep 23, 2015
    mac 下的 terminal 只要
    echo "ServerAliveInterval 20" >> /root/.ssh/config
    就够了
    introom
        20
    introom  
       Sep 23, 2015 via Android
    楼上改 ssh config 都没用,你把电脑合上去试试就知道了。

    因为那东西就不是干这个的啊,请好好读 man


    所以老老实实用 tmux 和 autossh
    stillness
        21
    stillness  
       Sep 23, 2015
    这是不是两个问题?
    一个是 ssh 服务端和客户端长时间不通信怎么保持连接
    一个是电脑休眠怎么让终端里的进程不退出
    meiriyitie
        22
    meiriyitie  
       Sep 23, 2015
    如何安装和使用 Mosh

    http://meiriyitie.com/2015/05/28/mosh/
    uniquecolesmith
        23
    uniquecolesmith  
       Sep 23, 2015
    1. tmux 足够强大
    2. mosh: 用 UDP, 没有 TCP 的超时概念
    ik0r
        24
    ik0r  
       Sep 23, 2015
    mosh +10086
    holinhot
        25
    holinhot  
       Sep 23, 2015
    你能做的还不够吧。有些 vps 奸商 设置了 tcp 会话超时。好像是 15 分钟无包就自动强致断开
    ryd994
        26
    ryd994  
       Sep 23, 2015 via Android
    TCP 在这种情况下一定会断
    要么 mosh 用 UDP
    要么 screen 断开也没事
    gaitana
        27
    gaitana  
       Sep 24, 2015
    mosh 跟 mycli 冲突
    ligyxy
        28
    ligyxy  
       Sep 24, 2015
    tmux
    xierch
        29
    xierch  
       Sep 24, 2015
    我是 mosh + tmux 的..
    cxbig
        30
    cxbig  
       Sep 24, 2015 via iPhone
    tmux
    vitovan
        31
    vitovan  
       Sep 24, 2015
    @GG2 赞.
    imnpc
        32
    imnpc  
       Sep 24, 2015
    一般来说 都是用 screen
    itkdqwzero
        33
    itkdqwzero  
       Sep 24, 2015
    大家都很历害, 我只会用 top
    Axurez
        34
    Axurez  
       Sep 24, 2015
    byobu ,也就是 tmux 或者 screen 。。
    cnhongwei
        35
    cnhongwei  
       Sep 24, 2015
    @oska874 mosh 是不会断的,只要你 client 和 server 端进程不被 kill 掉,网络断了,会自动重连,并回到原会话。所以实用于移动环境,在公司连上,电脑一待机,拿回家,又自动连上了。

    但 mosh 有一个缺陷,滚屏的内容没有办法回翻,这点就没有 tmux 和 screen 方便。官方说是 1.3 版本才会支持。
    ijse
        36
    ijse  
       Sep 24, 2015
    如果只想保持某个进程不会因为 session 断开而终止,比较简单的方法是用 nohub 。
    如果想保留 ssh 工作空间,还是用 screen 比较好。
    tcitry
        37
    tcitry  
       Sep 24, 2015
    楼主需要 tmux 或者 supervisor
    introom
        38
    introom  
       Sep 24, 2015
    another reason I don't recommend mosh to others is, mosh doesn't support X forwarding. Seemingly, you can't share the clipboard between your linux server and your host machine.

    One workaround is to use software like clipper, which instantiates a new tcp session between the server and your host for the sole purpose of sharing clipboard content.
    KKKKale
        39
    KKKKale  
       Sep 24, 2015
    tmux +1
    datocp
        40
    datocp  
       Sep 24, 2015
    系统休眠首先要解决 无线连接 是否会因为节能特性断开。

    然后才是 tcp/udp timeout 设置,路由的 tcp/udp timeout 在拔号获得 100.开头的 ip 时应该是没效果的,至少以前在使用 putty 时经常的断开,而现在获得的是公网 ip 则没问题, putty 在 connection 设置项有个 seconds between keepalive(0 to tun off) 防呆选项,其实通过 ping ip 是最简单的方法,当然前提还是先解决节能特性。
    dennyzhang
        41
    dennyzhang  
       Sep 13, 2016
    tmux +1
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3427 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 109ms · UTC 11:25 · PVG 19:25 · LAX 04:25 · JFK 07:25
    ♥ Do have faith in what you're doing.