expect+shell实现自动ssh的证书密码自动登录

场景说明

client发起ssh携带私钥证书登录server服务器,一般私钥都是设置密码的,所以产生了交互,正常情况下,我们必须手动操作输入密码,登录到服务器,非常的繁琐,所以我们来尝试自动登录

尝试方式

  1. 使用sshpass
  2. 使用expect+shell组合

sshpass尝试[失败]

# 尝试直接安装,发现找不到
brew install sshpass

# 安装sshpass
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

# 尝试sshpass自动输入密码,发现携带了证书的一直卡着不动,失败
sshpass -p 密码 ssh -i my_pri.pem myaccount@ip -p22

expect+shell尝试[成功]

安装expect

brew install expect

jp.sh 脚本

#!/bin/bash
ssh -i my_pri.pem myaccount@ip -p22
chmod a+x jp.sh

expjp.exp 脚本

#!/usr/bin/expect -f
spawn ./jp.sh
# 注意 这里的文字需要根据自己提示自行调整
expect "Enter passphrase for key 'my_pri.pem':"
send "密码\n"
interact
chmod a+x expjp.exp

尝试运行

//运行成功
./expjp.exp

总结

expect可以在各种产生交互的地方使用,等待大家慢慢挖掘

你可能感兴趣的:(shell,expect,自动登录)