ssh自动输入密码自动登录
- 如果是密钥登录的话还比较好自动登录,如果是密码登录的话一般用
expect
,还可以使用sshpass
expect
-
expect
是一个用来处理交互的命令。借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成。形象的说,ssh登录,ftp登录等都符合交互的定义。下文我们首先提出一个问题,然后介绍基础知四个命令,最后提出解决方法。 -
expect
中最关键的四个命令是send,expect,spawn,interact。
send
:用于向进程发送字符串expect
:从进程接收字符串spawn
:启动新的进程interact
:允许用户交互
-
如果没有expect,可以先安装,Ubuntu安装命令如下:
sudo apt install expect
- centos
yum install expect
- 自动登录脚本auto-login.exp
#!/usr/bin/expect
set timeout 102
set user [lindex $argv 0]
set ip [lindex $argv 1]
#set password [lindex $argv 2]
set password 123456
spawn ssh -o "ProxyCommand=nc -x 127.0.0.1:1080 %h %p" -o "ServerAliveInterval=10" $user@$ip
#spawn ssh -o "ServerAliveInterval=10" $user@$ip
expect {
"yes/no" {send "yes\r"; exp_continue}
"password:" {send "$password\r"}
}
interact
- 注意我这里用了代理登录的
-o "ProxyCommand=nc -x 127.0.0.1:1080 %h %p"
看自己情况需不需要这个参数;-o "ServerAliveInterval=10"
是发心跳间隔时间多少秒。 - 下面的
expect
yes/no
如果出现了yes/no
就输入yes\r
;同理如果出现了password:
就输入自己的密码加\r
- 使用
expect auto-login.exp 用户名 ip
sshpass
- Ubuntu安装
sudo apt install sshpass
- centos/redhat安装
yum install sshpass
- 源码安装
wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
tar -xvf sshpass.tar.gz
cd sshpass-1.06
./configure
sudo make install
- 这个命令也非常舒服sshpass+ssh
sshpass -p 'xxxxxx' ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1080 %h %p" -o ServerAliveInterval=60 root@xx.xx.xx.xx
-p 参数
传入密码- 我加了代理的,加不加视情况而定