Windows控制台ssh连接Linux,并且保持连接不断开

发布于:2022-12-15 ⋅ 阅读:(332) ⋅ 点赞:(0)

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” 👇
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 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到