场景说明
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可以在各种产生交互的地方使用,等待大家慢慢挖掘
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。