当前位置: 首页 > Linux, shell > 正文

使用sshpass进行非交互式密码验证

工程脚本中,经常需要登陆到远程机器进行操作,最常用的方式就是ssh了。

为了确保安全性,ssh不允许使用任何方式记录明文密码,这就对非交互式脚本造成的障碍(当然,ssh提供了公钥的方式来避免输入密码,但是对一般使用者来说,没有必要进行那么复杂的配置)

这里简单的介绍一下另外一个好用的工具(sshpass)

sshpass使用方式很简单,模拟命令行的方式向ssh传递密码

  sshpass -p passwd ssh user@host [some_command]

-p 参数在命令行直接指定密码

注意:这是一种最方便的方式,也是一种最不安全的方式,任何人只要执行一个ps就能看到您的密码

  sshpass -f passwd_file ssh user@host [some command]

此种方式稍微安全一些,从密码文件的第一行读取密码

  SSHPASS=passwd; ssh -e ssh user@host [some command]

-e 从环境变量读取密码,此种方式的安全性更高了一些

  echo passwd | sshpass -d0 ssh user@host [some command]

-d 向sshpass传递匿名管道符,sshpass从匿名管道读取密码。此种方式可以达到最大级别的安全性,当然,我上面的例子举的很山寨,直接将标准输入0传给了sshpass

聪明的你肯定可以想到其他牛逼的方式的(比如,父进程fork出子进程,由子进程执行sshpass,父进程负责传递管道符等等)

最后,再申明一下,如果有条件就使用rsa公钥的方式验证,以增强安全性,下面贴出sshpass在安全方面的警告

  First  and  foremost, users of sshpass should realize that ssh's insistance on only
  getting the password interactively is not without reason. It is close to impossible 
  to securely store the password, and users of sshpass should consider whether ssh's 
  public  key  authentication provides the same end-user experience, while involving 
  less hassle and being more secure.

  The  -p  option  should  be considered the least secure of all of sshpass's options.
  All system users can see the password in the command line with a simple "ps" command.
  Sshpass makes a minimal attempt to hide the password, but such attempts are doomed 
  to create race conditions without actually solving the problem. Users of sshpass are
  encouraged to use one of the other password passing techniques, which are all more
  secure.

  In particular, people writing programs that are meant to communicate the password 
  programatically are encouraged to use an anonymous  pipe and pass the pipe's 
  reading end to sshpass using the -d option.
    分享到:

本文固定链接: http://klwang.info/introduce-to-a-noninteractive-ssh-password-provider/ | 数据库|Linux|软件开发

该日志由 klwang 于2013年07月21日发表在 Linux, shell 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 使用sshpass进行非交互式密码验证 | 数据库|Linux|软件开发
关键字: , , ,

使用sshpass进行非交互式密码验证:等您坐沙发呢!

发表评论

*
快捷键:Ctrl+Enter