如何保持 SSH 连接不断开 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alangz
V2EX    DevOps

如何保持 SSH 连接不断开

  •  
  •   alangz 2015-09-23 14:00:03 +08:00 12304 次点击
    这是一个创建于 3747 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    在~/.ssh/config 中添加

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

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


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

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

    但 mosh 有一个缺陷,滚屏的内容没有办法回翻,这点就没有 tmux 和 screen 方便。官方说是 1.3 版本才会支持。
    ijse
        36
    ijse  
       2015-09-24 09:19:43 +08:00
    如果只想保持某个进程不会因为 session 断开而终止,比较简单的方法是用 nohub 。
    如果想保留 ssh 工作空间,还是用 screen 比较好。
    tcitry
        37
    tcitry  
       2015-09-24 10:34:13 +08:00
    楼主需要 tmux 或者 supervisor
    introom
        38
    introom  
       2015-09-24 11:27:14 +08:00
    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  
       2015-09-24 11:35:17 +08:00
    tmux +1
    datocp
        40
    datocp  
       2015-09-24 12:29:51 +08:00
    系统休眠首先要解决 无线连接 是否会因为节能特性断开。

    然后才是 tcp/udp timeout 设置,路由的 tcp/udp timeout 在拔号获得 100.开头的 ip 时应该是没效果的,至少以前在使用 putty 时经常的断开,而现在获得的是公网 ip 则没问题, putty 在 connection 设置项有个 seconds between keepalive(0 to tun off) 防呆选项,其实通过 ping ip 是最简单的方法,当然前提还是先解决节能特性。
    dennyzhang
        41
    dennyzhang  
       2016-09-13 23:23:38 +08:00
    tmux +1
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2631 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 12:09 PVG 20:09 LAX 04:09 JFK 07:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86