连接远程系统并传输文件是系统管理员一直在做的事情。SSH是Linux平台上许多系统管理员使用的必备工具。SSH支持两种形式的身份验证:1.密码身份验证2.公钥身份验证公钥身份验证被认为是这两种方法中最安全的形式,尽管密码身份验证是最流行和最简单的。然而,当使用密码验证时,总是要求用户输入密码。这种重复很乏味。此外,SSH在shell脚本中使用时需要手动干预。如果在使用SSH密码身份验证时需要自动化,那么一个简单的工具sshpass是必不可少的。什么是sshpasssshpass实用程序旨在使用键盘交互式密码身份验证模式运行SSH,但非交互式。SSH使用直接TTY访问来确保密码确实是由交互式键盘的用户发出的。sshpass在专用TTY中运行SSH,使SSH认为它正在从交互式用户那里获取密码。安装sshpass您可以使用以下简单命令安装sshpass:>yuminstallsshpass-yusesshpass指定要在sshpass选项之后运行的命令。通常命令ssh带有参数,但它可以是任何其他命令。但是,目前SSH密码提示被硬编码为sshpass。sshpass[-f文件名|-d编号|-p密码|-e][options]命令选项-ppassword密码在命令行给出。-f文件名密码是文件名的第一行。-dnumbernumber是sshpass从运行程序继承的文件描述符。从打开的文件描述符中读取密码。-e密码来自环境变量“SSHPASS”。使用sshpass通过SSH登录远程服务器。假设密码是4u2tryhack。以下是使用sshpass选项的几种方法。使用-p(这是最不安全的选项,不应使用):>sshpass-p"4u2tryhack"sshusername@rumenz.com-p在shell脚本中使用时,该选项如下所示:>sshpass-p"4u2tryhack"ssh-oStrictHostKeyChecking=nousername@rumenz.comwith-f选项(密码应该在文件名的第一行):>echo'4u2tryhack'>pass_file>chmod0400pass_file>sshpass-fpass_filesshusername@rumenz.com-f在shell脚本中使用以下选项:>sshpass-fpass_filessh-oStrictHostKeyChecking=nousername@rumenz.com使用-e选项(密码应该是文件名的第一行)$SSHPASS='4u2tryhack'sshpass-esshusername@rumenz.com-e在shell脚本中使用时,选项如下所示:>SSHPASS='4u2tryhack'sshpass-essh-oStrictHostKeyChecking=nousername@rumenz.com示例2:rsyncsshpass和rsync:>SSHPASS='4u2tryhack'rsync--rsh="sshpass-essh-lusername"/rumenz/rumenz.com:/opt/rumenz/上面使用-e选项将密码传递给环境变量SSHPASS我们可以-f像这样使用开关:>rsync--rsh="sshpass-fpass_filessh-lusername"/rumenz/rumenz.com:/opt/rumenz/示例3:scp使用sshpass和scp:>scp-r/var/www/html--rsh="sshpass-fpass_filessh-luser"rumenz.com:/var/www/html示例4:GPG使用-f开关时也可以使用sshpassGPG加密文件,指的是纯文本格式的文件。让我们看看如何使用GPG加密文件并使用它。首先,像这样创建一个文件:>echo'4u2tryhack'>.sshpasswd接下来,使用以下gpg命令加密文件:>gpg-c.sshpasswd删除包含明文的文件:>rm.sshpasswd最后,按如下方式使用:>gpg-d-q.sshpassword.gpg>pass_file;sshpass-fpass_filesshroot@rumenz.com原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门
