Linux autossh 实现SSH 密码自动输入,自动登录的方法

远程连接Linux服务器都会用到SSH,使用linux默认的连接程序,每次都要手动输入密码,很麻烦。

OuVPS使用的Godaddy 虚拟主机免费SSH做代理,过一段时间服务器会自动断开连接,断开后需要手动连接,还要输密码。本文将介绍SSH断线后自动连接,并且自动输入密码。

解决这个问题有两套方案:

一、autossh + expect(autossh用于短线自动连接,expect用于输入密码)
二、sshpass + cron(cron定期执行监控SSH进程,一旦发现SSH断开连接,用sshpass连接服务器可以自动输入密码)

三、ssh+expect 有高手用expect脚本实现了autossh的功能,同时添加自动输入密码的功能。具体可以参考:《expect脚本实现autossh自动输入密码》

下面主要是第一种方案的实现方法,其他方法会在稍后补上。

要求:安装有autossh 和 expect

yum install autossh expect

新建一个sh文件,比如/root/autossh.sh,内容如下
也可以直接从本站下载。
http://www.ouvps.com/sh/autossh.sh

#!/bin/bash
HOST="xx.xxx.com" #目标服务器的IP或域名
USER="yourname" #用户名
PASS="yourpassword" #密码
CMD=$@

VAR=$(expect -c "
spawn /usr/bin/autossh -M 2000 -N -v -D 127.0.0.1:7070 $USER@$HOST $CMD
match_max 100000
expect \"*?assword:*\"
send -- \"$PASS\r\"
send -- \"\r\"
expect eof
")
echo "==============="
echo "$VAR"

接下来,执行上面的脚本:

sh /root/autossh.sh

程序会自动完成连接。注意,这个脚本有一个缺陷,如果是第一次连接服务器,由于无法保存服务器指纹文件,脚本会出错。解决方法很简单,先手动连接一次就可以了。

Tags:

Add a Comment

邮箱地址不会被公开。 必填项已用*标注