使用方法: ./sshlogin IP 密码
root@node5 ~]# cat sshlogin
#!/bin/bash
ip=$1
passwd=$2
port=22
autologin(){
expect -c "
set timeout 5
spawn ssh-copy-id -f root@$1 -p$3
expect {
"*yes/no*" {send "yes"\n;exp_continue}
"*password:" {send "$2"\n}
}
expect eof
"
}
#sh createAuth.sh
createAuth(){
if [ ! -f ~/.ssh/id_rsa.pub ] || [ ! -f ~/.ssh/id_rsa ] ;then
expect <<-EOF
spawn ssh-keygen
expect "*:"
send "\n"
expect {
"*y/n*" {send "y\n";exp_continue}
"*:" {send "\n"}
}
#expect eof
EOF
fi
}
createAuth
autologin $ip $passwd $port

该博客介绍了一个用于自动登录远程服务器的bash脚本,通过expect库实现SSH登录并复制本地身份验证密钥到远程主机。脚本首先检查本地是否存在ssh密钥对,如果没有则生成新的密钥对,然后使用ssh-copy-id命令将公钥发送到目标服务器,实现免密登录。
1555

被折叠的 条评论
为什么被折叠?



