MAC终端密钥登陆自动输入密码

升级MAC系统后,发现用于MAC终端ssh服务器的登陆脚本没法正常执行了,表现为:须要手动输入密钥密码,因而从新整理一下,恢复正常,在此记录一下:服务器

#!/usr/bin/expect -f
spawn ssh-add -D
expect "*removed."
spawn ssh-add -l
expect "*identities."
spawn ssh-add /Users/alsoalso/keys/RSA_Key01
expect "*RSA_Key01" {send "密钥密码\r";}
expect "Identity added:"
spawn ssh SSH用户@IP地址 -pSSH端口 -i /Users/alsoalso/keys/RSA_Key01
expect "*yes/no*" { send "yes\n"; exp_continue }
interactssh

说明一下:ide

#!/usr/bin/expect -f 指定expect, 须要安装加密

spawn ssh-add -D 删除已add的密码,mac终端对添加的条目有限制,因此每次都初始化一下spa

expect "*removed." 根据上一步的执行反馈,获取关键字用于执行下一步的条件ip

spawn ssh-add -l 列出密钥列表,非必须rem

expect "*identities." 根据上一步的执行反馈,获取关键字用于执行下一步的条件,非必须it

spawn ssh-add /Users/alsoalso/keys/RSA_Key01 添加密钥文件登录

expect "*RSA_Key01" {send "密钥密码\r";} 输入密钥密码终端

expect "Identity added:" 判断密钥是否登陆成功

spawn ssh SSH用户@IP地址 -pSSH端口 -i /Users/alsoalso/keys/RSA_Key01 链接服务器

expect "*yes/no*" { send "yes\n"; exp_continue } 若是首次链接服务器,会有确认

interact 命令执行完成后保持登陆在远程服务器上

20180322更新:直接切换为root用户

#!/usr/bin/expect -f

spawn ssh-add -D

expect "*removed."

spawn ssh-add -l

expect "*identities."

spawn ssh-add /Users/alsoalso/keys/RSA_Key00

expect "*RSA_Key00" {send "mima\r";}

expect "Identity added:" { spawn ssh sshusername@ip -pssh端口 -i /Users/alsoalso/keys/RSA_Key00 }

expect "sshusername@hostname ~" { send "su\r" }

expect "密码" { send "rootmima\r" }

expect "*yes/no*" { send "yes\r"; exp_continue }

interact