Keep SSH session alive [closed]

2019-01-08 03:15发布

I use ssh -p8520 username@remote_host to login remote server.

Issue:

It is always connected and works properly when I am in the work place. Unfortunately, terminal freezes in 10 - 15 minutes after I connected with the remote server from home.

There's no error/timeout report on the console but the cursor cannot move any more.

When enter w to check the login users, some zombies login users are there, and I have to kill them manually.

This is quite annoying. Can anyone help me?

5条回答
Bombasti
2楼-- · 2019-01-08 03:40

sshd (the server) closes the connection if it doesn't hear anything from the client for a while. You can tell your client to send a sign-of-life signal to the server once in a while.

The configuration for this is in the file "~/.ssh/config", create it if the configuration file does not exist. To send the signal every four minutes (240 seconds) to the remote host, put the following in your "~/.ssh/config" file.

Host remotehost:
    HostName remotehost.com
    ServerAliveInterval 240

This is what I have in my "~/.ssh/config":

To enable it for all hosts use:

Host *
ServerAliveInterval 240

Also make sure to run:

chmod 600 ~/.ssh/config

because the config file must not be world-readable.

查看更多
仙女界的扛把子
3楼-- · 2019-01-08 03:40

For those wondering, @edward-coast

If you want to set the keep alive for the server, add this to /etc/ssh/sshd_config:

ClientAliveInterval 60
ClientAliveCountMax 2

ClientAliveInterval: Sets a timeout interval in seconds after which if no data has been received from the client, sshd(8) will send a message through the encrypted channel to request a response from the client.

ClientAliveCountMax: Sets the number of client alive messages (see below) which may be sent without sshd(8) receiving any messages back from the client. If this threshold is reached while client alive messages are being sent, sshd will disconnect the client, terminating the session.

查看更多
Lonely孤独者°
4楼-- · 2019-01-08 03:42

I wanted a one-time solution:

ssh -o ServerAliveInterval=60 myname@myhost.com

Stored it in an alias:

alias sshprod='ssh -v -o ServerAliveInterval=60 myname@myhost.com'

Now can connect like this:

me@MyMachine:~$ sshprod
查看更多
贪生不怕死
5楼-- · 2019-01-08 03:46

putty settings

FYI Putty Users can set the options here

查看更多
冷血范
6楼-- · 2019-01-08 03:50

We can keep our ssh connection alive by having following Global configurations

Add the following line to the /etc/ssh/ssh_config file:

ServerAliveInterval 60
查看更多
登录 后发表回答