sshpass ( ssh password ) 是一个非交互式的 SSH 密码提供工具,用于为 SSH 连接提供密码。它通常用于自动化脚本,因为自动化脚本无法手动输入密码。

Linux sshpass 命令主要用于自动化脚本在本地与服务器之间使用 SSH 连接时,自动提供密码,无需交互。

sshpass 的定义解释

在 Linux 或 FreeBSD 系统中,sshpass 命令主要用于无法交互的情况下,能够自动提供密码,确保能够建立 SSH 连接。

sshpass 命令安装

1、Debian、Ubuntu 系统安装 sshpass 命令:

sudo apt-get install sshpass

2、RHEL、AlmaLinux、Rocky linux 系统安装 sshpass 命令:

sudo dnf install sshpass

3、FreeBSD 系统安装 sshpass 命令:

sudo pkg install sshpass

sshpass 命令语法

sshpass [ -f filename | -d num | -p password | -e ] [ 选项 ] command arguments
  • filename:用于指定存放用户密码的文件,第一行为用户密码。
  • password:用户密码。
  • command argument:可执行的任意命令及其参数(这些命令需要交互式提供密码)。

sshpass 命令使用示例

使用参数 -p 提供密码

使用参数 -p 直接在命令提供密码:

sshpass -p 123456 scp user1@10.10.0.1:/home/user1/sample.txt ./sample1.txt

执行效果:使用 scp 把服务器 10.10.0.1/home/user1 文件复制到本地,自动提供密码,无需交互提供密码。

使用文件提供密码

使用参数 -f 指定文件,为命令提供密码:

echo'123456' > pass_file
chmod 0400 pass_file
sshpass -f pass_file ssh user1@10.10.0.1

执行效果:利用 ssh 命令使用 user1 登录服务器 10.10.0.1

sshpass 命令参数解释

如下给出了 Linux sshpass 命令中所有选项的解释说明:

选项 解释说明
-p password 在命令行中指定密码,请注意安全
-f filename 指定文件提供密码,第一行为密码
-d number number是sshpass从运行程序继承的文件描述符,从打开的文件描述符中读取密码
-e 从环境变量 SSHPASS 读取密码
-P 设置密码提示符,sshpass 在程序到 TTY 的输出中搜索这个提示符时,作为发送密码的指示。默认情况下,sshpass 查找字符串 “assword:”(它匹配“Password:”和“Password:”),如果您的客户机的提示符不属于这两个选项中的任何一个,您可以使用此选项覆盖默认值
-v 输出详细信息

结语

在本教程中我们介绍了如何使用 sshpass ( ssh password ) 为一个非交互式的 SSH 连接提供密码。sshpass 通常用于自动化脚本,因为自动化脚本无法手动输入密码,需要程序自动提供密码,这就是 sshpass 作用。

该 scp 命令可以在 Linux 系统中使用,也可以在 FreeBSD 系统中使用。