在大多数情况下,Linux系统管理员使用SSH登录Linux服务器时,要么是通过密码,要么是无密码SSH登录,要么是基于密钥的SSH认证。如果您想在SSH登录提示符下自动提供您的密码和用户名怎么办?这是sshpass可以提供帮助的地方。sshpass是一个简单、轻量级的命令行工具,我们可以通过它向命令提示符本身提供密码(非交互式密码身份验证),以便可以通过cron调度程序执行自动shell脚本以进行备份。ssh直接使用TTY访问以确保从用户键盘输入密码。sshpass在专用tty中运行ssh以误导ssh相信它是它从用户那里收到的密码。重要提示:使用sshpass是最不安全的,因为系统上的所有用户都可以在命令行使用简单的“ps”命令查看密码。因此,如果有必要,比如在生产环境中,我强烈建议使用SSH无密码身份验证。在Linux中安装sshpass在基于RedHat/CentOS的系统中,首先您需要启用EPEL存储库并使用yum命令安装它。#yuminstallsshpass#dnfinstallsshpass[Fedora22及以上]在Debian/Ubuntu及其衍生版本上,可以使用apt-get命令安装。$sudoapt-getinstallsshpass或者,您也可以从最新的源代码安装sshpass,首先下载源代码并从tar文件中提取内容:$wgethttp://sourceforge.net/projects/sshpass/files/latest/download-osshpass.tar.gz$tar-xvfsshpass.tar.gz$cdsshpass-1.06$./configure#sudomakeinstall如何在Linux中使用sshpasssshpass与ssh一起使用,使用以下命令查看sshpass使用的选项的完整说明:$sshpass-下面是显示的sshpass帮助内容:Usage:sshpass[-f|-d|-p|-e][-hV]commandparameters-ffilenameTakepasswordtousefromfile-dnumberUsenumberasfiledescriptorforgettingpassword-ppasswordProvidepasswordasargument(securityunwise)-ePasswordispassedasenv-var"SSHPASSd-passwordbet-passwordhShowhelp(thisscreen)-VPrintversioninformationAtmostoneof-f,-d,-por-eshouldbeused正如我之前提到的,sshpass仅对脚本编写更可靠和有用,请参见下面的示例命令。登录到远程Linuxssh服务器(10.42.0.1)使用用户名和密码并检查文件系统磁盘使用情况,如图所示。$sshpass-p'my_pass_here'sshaaronkilik@10.42.0.1'df-h'重要说明:这里,密码是在命令行上提供的,这是不安全的,不建议使用此选项。sshpass-使用SSH远程登录Linux。但是,要防止密码显示在屏幕上,您可以使用-e标志并输入密码作为SSHPASS环境变量的值,如下所示:$exportSSHPASS='my_pass_here'$echo$SSHPASS$sshpass-esshaaronkilik@10.42.0.1'df-h'sshpass–在终端中隐藏密码注意:在上面的示例中,SSHPASS环境变量仅用于临时目的,重启后将被删除。***设置SSHPASS环境变量,打开/etc/profile文件,在文件开头输入export语句:exportSSHPASS='my_pass_here'保存文件并退出,然后运行以下命令使修改生效效果:$source/etc/profileadditional,您还可以使用-f标志并将密码放入文件中。这样,您可以像这样从文件中读取密码:$sshpass-fpassword_filenamesshaaronkilik@10.42.0.1'df-h'sshpass-在登录时提供密码文件您还可以使用sshpass通过scp或rsync备份/同步传输文件文件,如下所示:----------TransferFilesUsingSCP--------$scp-r/var/www/html/example.com--rsh="sshpass-p'my_pass_here'ssh-laaronkilik"10.42.0.1:/var/www/html--------BackuporSyncFilesUsingRsync--------$rsync--rsh="sshpass-p'my_pass_here'ssh-laaronkilik"10.42.0.1:/data/backup//backup/更多用法,推荐阅读sshpass的manpage,输入:$mansshpass在这篇文章中,我们讲解了sshpass是一个简单的非交互式密码认证工具。虽然此工具可能有用,但强烈建议使用更安全的ssh公钥身份验证机制。请在下面的评论框中写下任何问题或意见,以便进行进一步的讨论。关于作者:AaronKili是Linux和F.O.S.S爱好者、未来的Linux系统管理员、Web开发人员和TecMint原创作者,热衷于使用计算机工作和分享知识。