alangz
V2EX  ›  DevOps

如何保持 SSH 连接不断开

  •  
  •   alangz · Sep 23, 2015 · 13205 views
    This topic created in 4061 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
    Theo14
    Sep 23, 2015
    1
    不如禁止休眠。。。
    GG2
    GG2
    Sep 23, 2015❤️1
    2
    mosh
    xiaoyao9933
    xiaoyao9933
    Sep 23, 2015
    3
    1. 如果非要保持不断开,可将 sshd client 和 server 的 alive 时间都调的非常大,我不知道可不可以设置为无限。我没这么试过,不清楚是否起作用。不推荐这种做法,因为连接可能确实会假死。
    2. 为什么不用 tmux 或者 screen 呀?
    xiaoyao9933
    xiaoyao9933
    Sep 23, 2015
    4
    @GG2 发现一个好东西。。
    Theo14
    Theo14
    Sep 23, 2015
    5
    @GG2 你说的这个不错哦
    simpx
    simpx
    Sep 23, 2015
    6
    1. 用 mosh

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

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

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

    在~/.ssh/config 中添加

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

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


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

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

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

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