-如何在 Linux 中使用 sshpass31% 编译自:作者: Aaron Kili 译者: geekpi 在大多数情况下,Linux 系统管理员使用 SSH 登录到程 Linux 服务器时,要么是通过密码,要么是无密码 SSH 登录[1]或基于密钥的 SSH 身份验证。 如果你想自动在 SSH 登录提示符中提供密码和用户名怎么办?这时 sshpass就可以帮到你了。 sshpass 是一个简单、轻量级的命令行工具,通过它我们能够向命令提示符本身提供密码(非交互式密码验证),这样就可以通过 [2]执行自动化的 shell 脚本进行备份。 ssh 直接使用 TTY 访问,以确保密码是用户键盘输入的。 sshpass 在专门的 tty 中运行 ssh,以误导 ssh 相信它是从用户接收到的密码。 重要:使用 sshpass是最不安全的,因为所有系统上的用户在命令行中通过简单的 “ps” 命令就可看到密码。因此,如果必要,比如说在生产环境,直播,我强烈建议使用 SSH 无密码身份验证[3]。 在 Linux 中安装 sshpass 在基于 RedHat/CentOS的系统中,首先需要[4]并使用 [5]安装它。 #yuminstall sshpass #dnf install sshpass [Fedora22及以上版本] 在 Debian/Ubuntu 和它的衍生版中,你可以使用 [6]来安装。 $ sudoapt-getinstall sshpass 另外,你也可以从最新的源码安装 sshpass,首先下载源码并从 tar 文件中解压出内容: $ wgethttp://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz $ tar-xvf sshpass.tar.gz $ cdsshpass-1.06 $ ./configure #sudomakeinstall 如何在 Linux 中使用 sshpass sshpass与 ssh一起使用,使用下面的命令可以查看 sshpass 的使用选项的完整描述: $ sshpass -h 下面为显示的 sshpass 帮助内容: Usage:sshpass [-f|-d|-p|-e][-hV]command parameters -f filename Takepassword to usefromfile -d number Usenumber asfiledeor forgetting password -p password Providepassword asargument (security unwise) -e Passwordispassed asenv-var"SSHPASS" Withnoparameters -password will be taken fromstdin -h Showhelp (thisscreen) -V Printversion information Atmost one of -f,-d,-p or-e should be used 正如我之前提到的,j2直播,sshpass在用于脚本时才更可靠及更有用,请看下面的示例命令。 使用用户名和密码登录到远程 Linux ssh 服务器(10.42.0.1),并检查文件系统磁盘使用情况[7],如图所示。 $ sshpass -p 'my_pass_here'sshaaronkilik@10.42.0.1'df -h' 重要提示:此处,在命令行中提供了密码,这是不安全的,不建议使用此选项。
sshpass – 使用 SSH 远程登录 Linux 但是,为了防止在屏幕上显示密码,可以使用 -e 标志,并将密码作为 SSHPASS 环境变量的值输入,如下所示: $ exportSSHPASS='my_pass_here' $ echo$SSHPASS $ sshpass -e sshaaronkilik@10.42.0.1'df -h'
sshpass – 在终端中隐藏密码 注意:在上面的示例中,SSHPASS 环境变量仅用于临时目的,并将在重新启动后删除。 要永久设置 SSHPASS 环境变量,打开 /etc/profile 文件,并在文件开头输入 export 语句: exportSSHPASS='my_pass_here' 保存文件并退出,接着运行下面的命令使更改生效: $ source /etc/profile 另外,也可以使用 -f 标志,并把密码放在一个文件中。 这样,您可以从文件中读取密码,如下所示: (责任编辑:本港台直播) |