sshpass:非交互式SSH登录的绝佳工具 - 不要在生产服务器上使用

在大多数情况下,Linux系统管理员使用SSH或者通过提供密码,或者登录到远程Linux服务器 密码的SSH登录 ,或keybased SSH验证。 如果你想使用 的用户名 SSH沿提供一个 密码提示本身呢? 这就是 sshpass来抢救。 sshpass是一个简单,重量轻的命令行工具,使我们能够到命令提示符本身提供的密码(非交互式密码验证),使自动化的shell脚本可以被执行通过采取备份的 cron调度 。 ssh使用直接TTY访问,以确保密码实际上由交互式键盘用户提供。 Sshpass在专门的tty中运行ssh,误导它相信它从交互式用户接收密码。 重要提示 :使用 sshpass认为是最不安全的,因为它揭示了密码,用简单的 “PS”命令在命令行上的所有系统用户。 我强烈建议使用 SSH密码认证

在Linux系统上安装sshpass

在基于 RedHat的/ CentOS的系统,首先你需要 启用EPEL软件库您的系统上使用安装它 yum的命令 ,如图所示。
# yum install sshpass
# dnf install sshpass    [On Fedora 22+ versions]
在Debian / Ubuntu和它的衍生物,可以使用安装 apt-get命令 ,如图所示。
$ sudo apt-get install sshpass
另外,也可以从源代码安装有最新版的 sshpass的,首先下载源代码,然后提取tar文件的内容,并安装它像这样:
$ wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
$ tar -xvf sshpass.tar.gz
$ cd sshpass-1.06
$ ./configure
# sudo make install 

如何在Linux中使用sshpass

sshpass用于使用 ssh在一起,你可以通过发出以下命令查看所有的完整描述了 sshpass使用选项:
$ sshpass -h
sshpass帮助
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename   Take password to use from file
-d number     Use number as file descriptor for getting password
-p password   Provide password as argument (security unwise)
-e            Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-h            Show help (this screen)
-V            Print version information
At most one of -f, -d, -p or -e should be used
正如我前面提到的 ,sshpass更可靠和脚本编写非常有用,可以考虑下面的例子命令。 登录到远程Linux SSH服务器(10.42.0.1)的用户名和密码,并 检查文件系统的磁盘使用远程系统,如图所示。
$ sshpass -p 'my_pass_here' ssh aaronkilik@10.42.0.1 'df -h' 
重要提示 :在这里,密码提供的命令行这实际上是不安全的,并使用此选项不建议上。

sshpass - Linux远程通过SSH登录

但是,为了防止在屏幕上显示的密码,可以使用 -e标志和如下 SSHPASS环境变量的值输入密码:
$ export SSHPASS='my_pass_here'
$ echo $SSHPASS
$ sshpass -e ssh aaronkilik@10.42.0.1 'df -h' 

sshpass - 在提示中隐藏密码

:在上面的例子中 ,SSHPASS环境变量仅用于临时用途及将重新引导期间被移除。 要永久设置 SSHPASS环境变量,打开 / etc / profile文件,并在文件开头输入输出语句:
export SSHPASS='my_pass_here'
保存文件并退出,然后运行以下命令以实现更改:
$ source /etc/profile 
在另一方面,你也可以使用 -f标志,并在文件中把密码。这样,您可以从文件中读取密码,如下所示:
$ sshpass -f password_filename ssh aaronkilik@10.42.0.1 'df -h'

sshpass - 提供密码文件以登录

您还可以使用sshpass来 传输使用scp文件备份/通过rsync同步文件,使用SSH,如下所示:
------- Transfer Files Using SCP ------- 
$ scp -r /var/www/html/example.com --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/var/www/html
------- Backup or Sync Files Using Rsync -------
$ rsync --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/data/backup/ /backup/
欲了解更多的用法,我建议你通过 sshpass手册页,请键入如下:
$ man sshpass
在这篇文章中,我们 sshpass一个简单的工具,使非交互式密码认证解释。虽然,这个工具可能是有帮助的,强烈建议使用ssh的更安全的公钥认证机制。 请通过下面的反馈部分留下任何问题或评论,以便进一步讨论。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏