sshpass:登录到SSH服务器/使用Shell脚本提供SSH密码
时间:2020-01-09 10:42:49 来源:igfitidea点击:
如何通过ssh登录而不使用没有密码的RSA/DSA公钥?
如何在Shell脚本中使用ssh?
如何使用SSH和Shell脚本登录非交互执行密码身份验证?
您可以使用sshpass命令为基于ssh的登录提供密码。
这是一个非交互式ssh密码验证工具。
从手册页:
sshpass是一种实用程序,旨在使用称为键盘交互式密码身份验证的模式运行ssh,但处于非交互式模式。
ssh使用直接TTY访问来确保密码确实是由交互式键盘用户发出的。
Sshpass在专用的tty中运行ssh,以为它是从交互式用户那里获取密码的。
在sshpass自己的选项之后指定要运行的命令。
通常,它是带有参数的ssh,但也可以是任何其他命令。
但是,ssh使用的密码提示当前已硬编码到sshpass中。
在Debian/Ubuntu Linux上安装sshpass
在RHEL/CentOS Linux下安装sshpass
首先,启用EPEL repo并执行以下yum命令:
$ sudo yum install sshpass
如果您使用的是Fedora Linux,请执行:
$ sudo dnf install sshpass
在Arch Linux下安装sshpass
$ sudo pacman -S sshpass
在OpenSUSE Linux下安装sshpass
$ sudo zypper install sshpass
在FreeBSD Unix下安装sshpass
要安装端口,请执行:
# cd /usr/ports/security/sshpass/ && make install clean
要添加软件包,请运行:
# pkg install sshpass
如何在Linux或者Unix中使用sshpass?
使用密码t @ uyM59bQ登录到名为server.example.com的ssh服务器:
$ sshpass -p 't@uyM59bQ' ssh [email protected]
对于shell脚本,您可能需要禁用主机密钥检查:
$ sshpass -p 't@uyM59bQ' ssh -o StrictHostKeyChecking=no [email protected]
不明智的安全警告:-p选项应被视为所有sshpass选项中最不安全的选项。
我建议您使用sshs公钥身份验证。
使用SSHPASS的bash shell脚本示例
语法为:
SSHPASS='t@uyM59bQ' sshpass -e ssh [email protected] SSHPASS='t@uyM59bQ' sshpass -e ssh [email protected] date SSHPASS='t@uyM59bQ' sshpass -e ssh [email protected] w SSHPASS='t@uyM59bQ' sshpass -e ssh -o StrictHostKeyChecking=no [email protected]
密码作为称为SSHPASS的环境变量传递。
从文件读取密码
另一个选择是使用-f选项从文件读取密码。
语法为:
sshpass -f fileNameHere ssh user@server
创建一个文件,如下所示:
$ echo 'myPassword' > myfile $ chmod 0400 myfile $ sshpass -f myfile ssh [email protected]
如何使用rsync备份/var/www/html?
使用密码验证通过SSH运行rsync,并在命令行中传递密码:
$ rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/
或者
$ SSHPASS='yourPasswordHere' rsync --rsh="sshpass -e ssh -l username" server.example.com:/var/www/html/ /backup/
如何将sshpass与gpg加密文件一起使用?
首先,创建一个文件,如下所示:
$ echo 'mySshPasswordHere' > .sshpassword
现在,使用gpg命令加密文件:
$ gpg -c .sshpassword $ rm .sshpassword
最后,如下使用它:
$ gpg -d -q .sshpassword.gpg > fifo; sshpass -f fifo ssh [email protected]
如果仅执行sshpass,将看到帮助屏幕.