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

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

使用sshpass
使用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可以在各种产生交互的地方使用,等待大家慢慢挖掘

评论

发表回复

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

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理