SSH如何保持连接-Ubuntu

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值