在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 - 在提示中隐藏密码
export SSHPASS='my_pass_here'保存文件并退出,然后运行以下命令以实现更改:
$ source /etc/profile在另一方面,你也可以使用
-f
标志,并在文件中把密码。这样,您可以从文件中读取密码,如下所示:
$ sshpass -f password_filename ssh aaronkilik@10.42.0.1 'df -h'
sshpass - 提供密码文件以登录
------- 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的更安全的公钥认证机制。 请通过下面的反馈部分留下任何问题或评论,以便进一步讨论。