无密钥登录的自动脚本实现(ssh-copy-id、expect免交互输入脚本)

kevin.Zhu 发布于:2013-1-16 15:52 分类:Shell  有 23 人浏览,获得评论 0 条  


http://blog.csdn.net/tantexian/article/details/45887857


无密钥登录的自动脚本实现:

vim auto_ssh.sh 

#!/usr/bin/expect  

set timeout 10  

set username [lindex $argv 0]  

set password [lindex $argv 1]  

set hostname [lindex $argv 2]  

spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $username@$hostname

expect {

            #first connect, no public key in ~/.ssh/known_hosts

            "Are you sure you want to continue connecting (yes/no)?" {

            send "yes\r"

            expect "password:"

                send "$password\r"

            }

            #already has public key in ~/.ssh/known_hosts

            "password:" {

                send "$password\r"

            }

            "Now try logging into the machine" {

                #it has authorized, do nothing!

            }

        }

expect eof

chmod 777 auto_ssh.sh

然后执行下述命令即可。

./auto_ssh.sh root 123456 192.168.10.162

试验结果:

162机器上传看:

成功!