当你需要自动化执行 SSH 命令时,使用 sshpass 工具可以让这个过程更加容易。本文将向您介绍 sshpass 工具的用途、安装和使用方法。
什么是 sshpass 工具?
sshpass 是一个命令行工具,它允许你在不交互输入密码的情况下,通过 SSH 连接到远程主机并执行命令。与手动输入凭据相比,sshpass 工具可以显著地提高生产力,并且避免了输入密码对于自动化流程的阻碍。
安装 sshpass 工具
sshpass 工具可以通过多种方式进行安装,包括下载源代码编译,使用包管理器安装等。
# 方法一: apt 工具
sudo apt update
sudo apt install sshpass
# 方法二:yum 工具
yum install sshpass
# 方法三:源码编译(推荐)
wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
tar -zxvf sshpass-1.06.tar.gz
cd sshpass-1.06
./configure
make
make install
如何使用 sshpass 工具
下面是使用 sshpass 工具建立 SSH 连接的基本语法:
sshpass -p 'password' ssh user@hostname command
在这个命令中,-p 参数后面是 SSH 登录的密码。user 是登录 SSH 的用户名,hostname 是远程主机名或 IP 地址,command 是您想要远程执行的命令。
一个简单的示例为例,假设您要远程登录到名为 example.com 的远程服务器,用户名为 user,密码为 password,并在远程主机上列出文件夹中的所有文件,那么命令应该如下所示:
sshpass -p 'password' ssh [email protected] ls -la
command 也可以是包含多条命令的字符串,每条命令需要用分号(;)分割,示例如下:
sshpass -p 'password' ssh user@hostname "cd /home/;pwd;ls"
上面 "cd /home/;pwd;ls"
其实是三条命令,
cd /home
进入到home目录pwd
打印当前目录目录ls
列出当前目录的文件列表
请注意,使用 sshpass 工具需要注意安全问题。因为密码可能被敏感信息泄露,一定要在充分安全的条件下使用。
解决 ssh 首次链接时,会有 Are you sure you want to continue connecting 询问提示的问题
当您第一次使用 ssh 连接远程主机时,ssh 命令会提示您确认远程主机的公钥指纹(Are you sure you want to continue connecting ),以确保您连接的是正确的主机。如果您希望避免这个交互式提示,可以在 ssh 命令中添加 -o 选项,并设置参数 StrictHostKeyChecking=no,例如:
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@host
上述命令会禁用 ssh 的主机密钥验证,直接建立连接。需要注意的是,这样做可能会存在安全风险,因为无法保证您连接到的是正确的主机,同时也无法检测到中间人攻击等安全问题。
如果您希望永久禁用 SSH 的主机密钥验证,可以在 ssh 配置文件中添加以下配置:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
上述配置会将 StrictHostKeyChecking 设置为 no,并将 UserKnownHostsFile 设置为 /dev/null,即不再保存已知主机的公钥指纹。这样做同样存在安全风险,需谨慎使用。
总结
sshpass 工具可以帮助您更轻松地通过 SSH 连接到远程主机并执行命令,从而提高自动化工作流程的效率。在使用 sshpass 工具时,您应该注意安全问题,并确保您的密码不会被泄露。