文章目录
Windows控制台ssh连接Linux,并且保持连接不断开
方法一: 连接参数加上 -o ServerAliveInterval=30
ssh -o ServerAliveInterval=30 <user>@<ip>
ssh -o ServerAliveInterval=120 user@ip
或者
ssh -o TCPKeepAlive=yes -o ServerAliveInterval=300 用户@域名或IP -p 端口
方法2: 修改远端Linux的 /etc/ssh/sshd_config
配置
sudo vi /etc/ssh/sshd_config
Ubuntu20.04默认的/etc/ssh/sshd_config的ClientAliveCountMax和ClientAliveInterval
设为:
ClientAliveInterval 120 -------------每120秒向客户都客户端发送心跳包
ClientAliveCountMax 3 --------------客户端无响应次数达到,就自动断开连接
复制粘贴
ClientAliveInterval 120
ClientAliveCountMax 3
esc:wq! 保存, 重启sshd
sudo systemctl restart sshd
用脚本一步设置保持连接
echo -e "\n### 保持客户端连接不断开的设置↓ \nClientAliveInterval 120\nClientAliveCountMax 3" | sudo tee -a /etc/ssh/sshd_config && sudo systemctl restart sshd ;
echo -e "\n### 保持客户端连接不断开的设置↓ 于 $(date "+%Y-%m-%d %H:%M:%S") 设置 \nClientAliveInterval 120\nClientAliveCountMax 3" | sudo tee -a /etc/ssh/sshd_config && sudo systemctl restart sshd ;
配置项解释
ClientAliveInterval
向客户端发送心跳包的间隔时间,整数表示多少秒
设置一个以秒
记的时长,如果超过这么长时间没有收到客户端的任何数据,
sshd 将通过安全通道向客户端发送一个”alive”消息,并等候应答。
默认值 0 表示不发送”alive”消息。这个选项仅对SSH-2有效。
ClientAliveCountMax
客户端无应答的最大次数
sshd 在未收到任何客户端回应前最多允许发送多少个”alive”消息。默认值是 3 。
到达这个上限后,sshd 将强制断开连接、关闭会话。
需要注意的是,”alive”消息与 TCPKeepAlive 有很大差异。
“alive”消息是通过加密连接发送的,因此不会被欺骗;而 TCPKeepAlive 却是可以被欺骗的。
如果 ClientAliveInterval 被设为 15 并且将 ClientAliveCountMax 保持为默认值,
那么无应答的客户端大约会在45秒后被强制断开。这个指令仅可以用于SSH-2协议。
TCPKeepAlive yes | no
该项使用TCP原生keepalive
如果设置为yes(默认值),那么周期性地检查连接是否存活。
当客户端崩溃或者由于其他原因导致连接死掉,那么该项检
查会让ssh或scp连接断开,即便只是临时性的故障。
这个选项在传输层(TCP)测试连接将该参数设置为no,会导致服务器不去检查连接是否存活。
这项使用TCP的keepalive选项,未被加密,容易受到IP欺骗攻击
经测试,只使用该项的话,还是会断开
方法3: 配置本机的OpenSSH客户端
配置Windows的OpenSSH客户端
Windows 中的 OpenSSH - 什么是适用于 Windows 的 OpenSSH?
Windows 中的 OpenSSH - 适用于 Windows 的 OpenSSH 入门
Win10默认自带OpenSSH客户端 默认的位置在: “C:\Windows\System32\OpenSSH\ssh.exe” 👇
- scp.exe 是在 SSH 上运行的文件复制实用工具
- sftp.exe,这是提供安全文件传输协议的服务,通过 SSH 运行
- ssh.exe,它是在用户的本地系统上运行的 SSH 客户端组件
- sshd.exe,它是远程所管理的系统上必须运行的 SSH 服务器组件
- ssh-add.exe,将私钥添加到服务器允许的列表中
- ssh-agent.exe,存储用于公钥身份验证的私钥
- ssh-keygen.exe,为 SSH 生成、管理和转换身份验证密钥
- ssh-keyscan.exe,帮助从许多主机收集公用 SSH 主机密钥
配置Linux的OpenSSH客户端
打开编辑 /etc/ssh/ssh_config 文件
sudo vi /etc/ssh/ssh_config
加入
TCPKeepAlive yes
ServerAliveInterval 120
或者一步搞定
echo -e "#远程控制台不断开\nTCPKeepAlive yes\nServerAliveInterval 120" | sudo tee -a /etc/ssh/ssh_config