乐趣区

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

退出移动版