解决ssh连接服务器掉线问题

我们都经历过ssh连上服务器,过段时间没操作,就自动断开了,有时候可能是直接在服务器修改代码,一下子傻了,当然我们不推荐长时间在线修改代码:)

-- D.C

OpenSSH基于安全的理由,如果用户连线到SSH Server后闲置一段时间,SSH Server会在超过特定时间后自动终止SSH连线。

以下方法,个人推荐第2,3种,修改每台服务器真的很烦內~

方法1-修改服务器的sshd_config

$ cd /etc/ssh
$ sudo vi /etc/ssh/sshd_config

找到内容,去掉注释并修改如下:

# 客户端每隔多少秒向服务发送一个心跳数据
ClientAliveInterval 30
# 表示上述多少次心跳无响应之后,会认为Client已经断开。
ClientAliveCountMax 1800

保存并重启服务。

$ service sshd restart

方法2-修改本机的ssh_config

sudo vi /etc/ssh/ssh_config
TCPKeepAlive=yes
ServerAliveInterval 60
ServerAliveCountMax 600
StrictHostKeyChecking no
ForwardAgent yes
Compression yes

方法3- 利用客户端的反断开功能

关于tmux

要注意,tmux是安装在服务器上的,你可以理解为screen的进化替代者,所以推荐在ec2的跳板机上安装,再跳到其他机器。

基本概念是:session > window > Pane

$ sudo yum install tmux
$ vi ~/.tmux.conf

写入下列内容,保存退出。

# Send prefix
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix

# Use Alt-arrow keys to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window

# use vim mode to edit
#setw -g mode-keys vi

# Mouse mode
#set -g mouse on
set -g mode-mouse on
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on


# Set easier window split keys
bind-key v split-window -h
bind-key h split-window -v

# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"

设置config之后的常用命令,记住所有tmux开头的命令都是在外面shell里,所有 prefix 开头的都是在session里:

vim 编辑命令,装B之路不轻松:

vi emacs 功能
vi emacs 功能
^ M-m 反缩进
Escape C-g 清除选定内容
Enter M-w 复制选定内容
j Down 光标下移
h Left 光标左移
l Right 光标右移
L 光标移到尾行
M M-r 光标移到中间行
H M-R 光标移到首行
k Up 光标上移
d C-u 删除整行
D C-k 删除到行末
$ C-e 移到行尾
:数字 g 前往指定行
C -d M-Down 向下滚动半屏
C -u M-Up 向上滚动半屏
C -f Page down 下一页
w M-f 下一个词
p C-y 粘贴
C -b Page up 上一页
b M-b 上一个词
q Escape 退出
C -Down or J C-Down 向下翻
C -Up or K C-Up 向下翻
n n 继续搜索
? C-r 向前搜索
/ C-s 向后搜索
0 C-a 移到行首
Space C-Space 开始选中
C-t 字符调序

Always ask yourself lonely: what's the fact?