SSH如何保持连接-Ubuntu

本文介绍如何配置SSH连接以保持长时间不断开,包括修改服务器和客户端配置文件,以及使用自动化脚本实现SSH连接的自动重连。同时,介绍了如何通过SSH进行端口映射和反向链接,实现网络流量的灵活路由。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SSH连接在没有输入和执行任务空闲一段时间后,就会自动断开连接,以节约系统资源和提高安全性。但在做端口映射的时候,就比较麻烦,刚开始连接上,可能服务端就退出了。可以做一些设置,让其能够保持长期连接。当然,如果网络中断了,连接也就断了,需要想别的办法能够自动重新连接。

Ubuntu 系统

A、服务器配置

修改ssh配置文件/etc/ssh/sshd_config,添加或者修改ClientAliveInterval为:

ClientAliveInterval 60

这个参数的是意思是每1分钟,服务器向客户端发一个消息,用于保持连接。

保存后记得重启ssh服务,使用sudo service sshd restart。

B、客户端配置

在ssh客户端配置文件/etc/ssh/ssh_config中添加下面这行:

ServerAliveInterval 60

或者,在linux系统中使用ssh连接远程服务器时,可以使用-o的一个参数ServerAliveInterval来设置防止超时的时间。

比如:ssh -o serveraliveinterval=60 username@host

自动化执行SSH

我们希望建立端口映射的操作能够自动执行。比如:

  • 动态端口映射:
    • sshpass -p "password" ssh -D 7070 user@serverip
    • 然后本机就可以使用端口localhsot:7070的socks5连接,就跟在serverip上操作一样。
  • 反向链接(从本地铺一个桥到服务器,然后其它流量可以从桥上过来):
    • sshpass -p "password" ssh -R 2222:localhost:22 root@serverip
    • 然后其它机器登入root@serverip,就可以使用 ssh -p 2222 user@localhost:22的方式来访问了。

上面的sshpass是用于命令行传入密码的(否则需要交互输入),ubuntu下可以直接 apt-get install sshpass 进行安装。
然后写脚本autossh.sh,内容如下:

#!/bin/bash

while [ '' == '' ]
do
ssh_d_process_num=`ps aux|grep -E 'ssh \-' |grep -v grep |wc -l`
if [ "$ssh_d_process_num" == "0" ]; then
  /home/user/sshpass -p "password" ssh -D 7070 user@ServerIP &
fi

sleep 300
done

执行一下这个脚本就可以了。sleep 300代表300秒查看一次,可以根据需要调整。

转载于:https://my.oschina.net/u/2306127/blog/2252210

### 使用SSH连接Ubuntu服务器的指南 要通过SSH连接Ubuntu服务器,需按照以下方法操作: #### 一、在Ubuntu服务器上配置SSH服务 确保目标Ubuntu系统已启用SSH服务。如果没有安装OpenSSH服务器,则可以通过运行以下命令来完成安装: ```bash sudo apt update sudo apt install openssh-server ``` 安装完成后,SSH服务通常会自动启动。为了验证其状态,可执行以下命令检查服务是否处于活动状态[^1]: ```bash sudo service ssh status ``` 如果结果显示`active (running)`,说明SSH服务正在正常运行。 --- #### 二、创建外部访问通道(针对无公网IP的情况) 当Ubuntu服务器位于局域网且未分配公网IP时,可通过隧道工具实现外网访问。以下是具体步骤: 1. **安装Cpolar软件** 下载并安装[Cpolar](https://www.cpolar.com/)至Ubuntu系统中。 2. **启动Cpolar Web UI界面** 启动Cpolar客户端后,登录Web管理页面以设置隧道规则。 3. **建立SSH隧道** 配置一条新的TCP类型的隧道,指定本地监听端口为22(默认SSH端口)。成功后,Cpolar将提供一个全局可用的URL或IP地址用于远程连接[^2]。 4. **测试连接有效性** 记录生成的公共入口地址,并尝试从其他设备发起连接请求。 --- #### 三、从Windows客户端连接Ubuntu服务器 对于基于Windows的操作环境,有多种方式可以实现与远端Ubuntu主机之间的通信交互: ##### 方法A:利用内置终端功能 现代版本的Windows操作系统支持PowerShell以及CMD中的ssh指令直接调用。只需打开任一控制台窗口,然后键入如下形式的语句即可开始会话过程: ```bash ssh username@server_ip_address -p port_number ``` 其中,“username”代表你在Linux那边拥有的合法用户名;而“server_ip_address”则是实际的目标机器网络定位符;最后,“port_number”一般保持缺省值即22不变除非另有特殊安排[^3]。 ##### 方法B:借助第三方应用程序——PuTTY 对于较旧版或者偏好图形化界面处理的朋友来说,PuTTy不失为一种理想的选择。下载对应平台上的exe文件之后双击加载主画面,在类别栏选中Session选项卡填写必要的参数项比如Host Name(或 IP address),Port数值等等再按Connect按钮就可以了。 --- ### 注意事项 - 如果遇到权限错误,请确认防火墙允许传入的数据包到达相应的端口号。 - 对于安全性考虑建议修改默认端口号码并且采用密钥认证代替简单的密码验证机制提升防护等级。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值