帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 如何安装sshpass使在shell脚本中使用ssh更容易

如何安装sshpass使在shell脚本中使用ssh更容易

发布时间:2020年02月07日 09:06:51    来源: A5互联

有多少次您需要在Linux shell脚本中使用ssh,却发现使用密码或ssh密钥会妨碍?你可以选择另一种方式,更轻松一些。

该替代方案是sshpass,它是一个非交互式ssh密码提供程序。使用此工具,您可以在命令中包含密码(这是不可取的),也可以将该字符串作为环境变量传递,并在需要时使用它。

我将向您展示如何安装和使用sshpass。这个工具可以安装在大多数Linux发行版上,这里将在Pop!_OS上进行演示。

一、如何安装sshpass

由于sshpass工具包含在标准存储库中,因此安装非常简单。登录到您的Linux服务器,打开终端窗口,然后发出以下命令:

sudo apt-get install sshpass -y

安装完成后,就可以开始使用了。

二、如何使用sshpass

使用sshpass实际上很容易。首先,我将演示如何建立连接,该连接将在命令中包含密码。假设您的用户是olivia,密码是A5idc $ 2020,并且您尝试连接到IP地址192.168.1.10的服务器。该命令将是:

sshpass -p 'A5idc$2020' ssh olivia@192.168.1.10

与sshpass一起传递时,不会提示您输入连接密码。

当然,您不会希望在命令中显示该密码。如果有人看着你的肩膀怎么办?相反,您可以使用export命令将密码另存为环境变量,如下所示:

出口SSHPASS ='A5idc $ 2020'

将密码保存为变量后,您现在可以运行相同的命令,而无需添加密码,如下所示:

sshpass -e ssh olivia@192.168.1.10

连接将在没有交互的情况下进行。

或者,您可以将密码保存在一个文件中(当然是一个隐藏的文件),然后发出命令:

sshpass -f .sshpassfile ssh olivia@192.168.1.10

我会给文件命名混淆内容的内容,例如.penguin.conf或类似的东西。

三、使用sshpass的含义

既然您知道如何使用sshpass,那么如何使用sshpass的含义就显而易见了。例如,假设您需要从远程服务器输出dh -f命令,以便在您编写的bash脚本中使用它。将密码保存为变量,您可以编写如下脚本:

#!/bin/bash

OUTPUT=$(sshpass -f .sshpassfile ssh olivia@192.168.1.10 'df -h')

echo $OUTPUT

您应该在终端上看到df -h命令的输出。