#!/bin/bash
USER=test
#PASSWD=**
PASSWD=*
PUBDIR=/home/$USER/.ssh/id_rsa.pub
PUBDIRssh=/home/$USER/.ssh
PUBDIR_id_rsa=/home/$USER/.ssh/id_rsa
rootdir=/root/.ssh/id_rsa.pub
rootdir_id_rsa=/root/.ssh/id_rsa
if [ "$USER" == "root" ];then
remote_dir=$rootdir
else
remote_dir=$PUBDIR
fi
user=`whoami`
echo $user
if [ "$user" == "root" ];then
if [ ! -f $remote_dir ];then
#ssh-keygen -t rsa
if [ "$USER" == "root" ];then
expect << EOF
set timeout 10s
spawn ssh-keygen -t rsa
expect "(${rootdir_id_rsa}):" {send "\r"}
expect "passphrase):" {send "\r"}
expect "again: " {send "\r"}
expect "#" {send "\r"}
EOF
else
if [ ! -d $PUBDIRssh ];then
mkdir -p $PUBDIRssh
chown -R $USER:$USER /home/$USER/
fi
expect << EOF
set timeout 10s
spawn ssh-keygen -t rsa
expect "(${rootdir_id_rsa}):" {send "${PUBDIR_id_rsa}\r"}
expect "passphrase):" {send "\r"}
expect "again: " {send "\r"}
expect "#" {send "\r"}
EOF
chown -R $USER:$USER /home/$USER/
fi
fi
elif [ "$user" == "$USER" ];then
expect << EOF
set timeout 10s
spawn ssh-keygen -t rsa
expect "(${PUBDIR_id_rsa}):" {send "\r"}
expect "passphrase):" {send "\r"}
expect "again: " {send "\r"}
expect "#" {send "\r"}
EOF
else
echo "请使用root用户或者$USER登陆!!"
exit
fi
while read line
do
ip=`echo $line | cut -d " " -f 1`
expect <<EOF
set timeout 10
spawn ssh-copy-id -i $remote_dir $USER@$line
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$PASSWD\r" }
}
expect eof
EOF
done </app/hostlist.txt
wait
免密登陆root和普通用户
最新推荐文章于 2024-06-11 23:13:10 发布