Linux sshpass 命令 | 自动为 SSH 连接提供密码
• 最后修改:2025-06-19 • 阅读量:21
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 系统中使用。