-
安装open-ssh服务端(部分系统默认自带)
sudo apt install openssh-server
-
查看启动状态
service ssh status
或
systemctl status sshd
-
如未启动,需进行启动
立即启动
service ssh start
开机启动
service ssh enable
或
立即启动
systemctl start sshd
开机启动
systemctl enable sshd
-
使用 ufw 防火墙工具开放ssh端口
sudo ufw allow ssh
ssh会默认翻译为22端口,如果防火墙工具未启动
sudo ufw enable
-
查看ip地址
ifconfig -a
或
ip addr
-
在别的机器上连接该服务器
ssh username@ip
-
关闭ssh
service ssh stop
或
sudo ufw disable
-
ssh连接记住密码
ssh-copy-id -i ~/.ssh/id_rsa.pub username@192.168.x.xxx
客户端连接配置 (避免超时)
- 保持客户端工具连接
vim ~/.ssh/config
Host * #表示需要启用该规则的服务端(域名或ip)
ServerAliveInterval 60 #表示没60秒去给服务端发起一次请求消息(这个设置好就行了)
ServerAliveCountMax 3 #表示最大连续尝试连接次数(这个基本不用设置)
- 如果是修改服务端配置
SSHD is a server (Analogous to a web server serving https)
SSH is a client (Analogous to a browser)
The Secure Shell Daemon application (SSH daemon or sshd) is the daemon program for ssh. -IBM
/etc/ssh/sshd_config
文件中添加如下内容
TCPKeepAlive yes #表示TCP保持连接不断开; 必须打开
#指定服务端向客户端请求消息的时间间隔,单位是秒,默认是0,不发送
# 设置个 300 表示 5分钟 发送一次. 注意是服务端主动发起, 然后等待客户端响应,成功则保持连接
# 设置的值要小于各层防火墙的最小值,不然就没用了
ClientAliveInterval 300
ClientAliveCountMax 3 #指服务端发出请求后客户端无响应则自动断开的最大次数。使用默认给的3即可
/etc/ssh/ssh_config
文件中添加如下内容
HOST *
....
# 下面是要加的
ServerAliveInterval 60
- 最后重启 sshd 服务生效
sudo /etc/init.d/ssh restart
- 连接时一并设置
ssh -o ServerAliveInterval=30 root@10.10.10.10
原因
通过配置看到,默认值中并没有做任何限制,那么理论上,ssh的连接是不会断开的,根据网络结构来看,问题就可能出现在一下这几个部分:
- 服务器存在防火墙,会关闭超时空闲连接,或设置了关闭超时空闲连接。
- 客服端和服务器之间存在路由器,路由器也可能带有防火墙,会关闭超时空闲连接。
- 客服端存在防火墙,会关闭超时空闲连接
通过ssh连接后,客户端和服务端长时间没响应时,在两方机器设置中均没任何限制,但在各自的防火墙,或是中转网络连接路由的防火墙中,出现了「闲置超时断开」的缺省机制.
知道了问题所在, 让连接「忙」起来就行了