通常我們以無密碼保護的金鑰來達成免密碼、無互動 (non-interactive) 的 ssh 登入
$ ssh-keygen
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
$ ssh [email protected] (免輸入密碼直接登入)

ssh远程连接时,每次让提示输入密码。实在不方便,特别是需要ssh到多台机器时。sshpass可以解决这个问题。
sshpass可以实现ssh的自动的登录

但是,为了防止在屏幕上显示密码,可以使用 -e 标志,并将密码作为 SSHPASS 环境变量的值输入,如下所示:

$ export SSHPASS='my_pass_here'
$ echo $SSHPASS
$ sshpass -e ssh [email protected] 'df -h' 

注意:在上面的示例中,SSHPASS 环境变量仅用于临时目的,并将在重新启动后删除。

要永久设置 SSHPASS 环境变量,打开 /etc/profile 文件,并在文件开头输入 export 语句:

export SSHPASS='my_pass_here'
保存文件并退出,接着运行下面的命令使更改生效:

$ source /etc/profile
用sshpass实现ssh的自动登陆 
要实现ssh自动登录,网上搜了一下,主要有两种方法:1、生成公钥。2、编写expect脚本。这两种方法,用起来都有点复杂。在新立得上安装ssh的时候,偶然发现一个sshpass,百度谷歌之,英文资料甚多,而中文资料寥寥。其实sshpass的用法很简单。
用法:

    sshpass 参数 SSH命令(ssh,sftp,scp等)。
    参数:
        -p password    //将参数password作为密码。
        -f passwordfile //提取文件passwordfile的第一行作为密码。
        -e        //将环境变量SSHPASS作为密码。

    比如说:
        scp [email protected]:/home/xxx/test /root   这个命令的作用是将服务器端文件test传到本地文件夹/root下。
        利用sshpass,假设密码为efghi,则可写作:
        ssh -p efghi scp [email protected]:/home/xxx/test /root

另外,对于ssh的第一次登陆,会提示:“Are you sure you want to continue connecting (yes/no)”,
这时用sshpass会不好使,可以在ssh命令后面加上 -o StrictHostKeyChecking=no来解决。比如说上面的命令,
就可以写作ssh -p efghi scp [email protected]:/home/xxx/test /root -o StrictHostKeyChecking=no。
[root@zhu ~]# sshpass --help
sshpass: invalid option --'-'
Usage: sshpass [-f|-d|-p|-e] [-hV]commandparameters
-ffilename  Take password to use from file
-dnumber    Use number as file descriptorforgetting password
-p password  Provide password as argument (security unwise)
-ePassword is passed as env-var"SSHPASS"
With no parameters - password will be taken from stdin
-h            Showhelp(this screen)
-V            Print version information
At most one of-f,-d, -p or-eshould be used

-o StrictHostKeyChecking=no 避免第一次登录出现公钥检查。也就是避免出现
-p password #后跟密码
[root@zhu ~]# sshpass -p 123456 ssh [email protected]
Last login: Wed Apr 16 15:35:22 2014 from 192.168.56.1
[root@jiang ~]# exit
logout
Connection to 192.168.56.102 closed.
-f filename #后跟保存密码的文件名,密码是文件内容的第一行。
[root@zhu ~]# cat 1.txt
123456
[root@zhu ~]# sshpass -f 1.txt  ssh [email protected]
Last login: Fri Apr 18 13:48:20 2014 from 192.168.56.101
[root@jiang ~]# exit
logout
Connection to 192.168.56.102 closed.
-e #将环境变量SSHPASS作为密码
[root@zhu ~]# export SSHPASS=123456
[root@zhu ~]# sshpass -e  ssh [email protected]
Last login: Fri Apr 18 13:51:45 2014 from 192.168.56.101
[root@jiang ~]# exit
logout
Connection to 192.168.56.102 closed.

results matching ""

    No results matching ""