V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alangz
V2EX  ›  DevOps

如何保持 SSH 连接不断开

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

    我使用 iTerm2 ,使用 ssh 命令登录远程服务器。在电脑休眠的时候, ssh 连接会断开。我想让 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  
       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
    nirocfz
        21
    nirocfz  
       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 的超时概念
    Jeremial
        24
    Jeremial  
       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.
    jyhmijack
        39
    jyhmijack  
       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   ·   实用小工具   ·   5225 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 05:50 · PVG 13:50 · LAX 21:50 · JFK 00:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.