网站首页 > 博客文章 正文
sshpass 是一个在非交互式SSH会话中自动提供密码的工具,允许用户在命令行中以安全的方式传递SSH登录密码,避免手动输入。
使用 sshpass 的示例:
示例1:简单SSH登录
要使用 sshpass 登录远程主机 remote_host,用户名为 user,密码为 password,执行以下命令:
Bash1sshpass -p 'password' ssh user@remote_host
示例2:执行远程命令
除了登录远程主机,直接通过 sshpass 执行远程命令。例如,要在远程主机上执行 ls -l 命令:
Bash1sshpass -p 'password' ssh user@remote_host 'ls -l'
示例3:使用环境变量存储密码
为了提高安全性,将密码存储在环境变量中,避免在命令行中明文显示:
Bash1export REMOTE_PASSWORD='password'
2sshpass -e ssh user@remote_host
这里的 -e 参数告诉 sshpass 从环境变量 SSHPASS 中读取密码。如果环境变量名为 REMOTE_PASSWORD,先将其导出到 SSHPASS:
Bash1export SSHPASS=$REMOTE_PASSWORD
2sshpass -e ssh user@remote_host
示例4:使用密码文件
如果不想在环境变量中存储密码,将其写入一个只有用户自己可读的文件:
Bash1echo 'password' > ~/.ssh/passfile
2chmod 600 ~/.ssh/passfile
3sshpass -f ~/.ssh/passfile ssh user@remote_host
这里的 -f 参数指定包含密码的文件路径。
示例5:通过SCP传输文件
sshpass 也可用于自动化 SCP(Secure Copy)操作,无需手动输入密码。例如,将本地文件 local_file 上传到远程主机的 remote_directory:
Bash1sshpass -p 'password' scp local_file user@remote_host:remote_directory/
或者,从远程主机下载文件:
Bash1sshpass -p 'password' scp user@remote_host:remote_file local_directory/
进阶用法:
示例6:使用sshpass结合ssh-keygen实现无密码登录
尽管sshpass提供了便捷的密码自动化认证,但出于安全考虑,推荐使用SSH公钥/私钥对(即SSH keys)进行无密码登录。
以下是使用sshpass结合ssh-keygen实现无密码登录的步骤:
- 生成SSH密钥对: 在本地机器上运行ssh-keygen命令生成密钥对:
- Bash1ssh-keygen
- 按照提示操作,可以选择密钥保存位置和设置密码(可选)。默认情况下,私钥(id_rsa)保存在~/.ssh目录,公钥(id_rsa.pub)自动追加到~/.ssh/authorized_keys。
- 将公钥复制到远程主机: 使用sshpass结合ssh-copy-id命令将公钥复制到远程主机的~/.ssh/authorized_keys文件:
- Bash1sshpass -p 'password' ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
- 之后,使用SSH密钥对无密码登录远程主机了:
- Bash1ssh user@remote_host
示例7:使用sshpass结合expect实现交互式脚本
在某些情况下,通过SSH执行一系列交互式命令。虽然sshpass直接传递密码,但对于要多次输入密码或进行复杂交互的场景,结合expect工具编写脚本来自动化交互过程。
以下是一个expect脚本示例:
Bash1#!/usr/bin/expect
2
3set password "your_password"
4set user "your_username"
5set host "remote_host"
6
7spawn ssh $user@$host
8
9expect "*assword:*"
10send "$password\r"
11
12expect "*$ "
13send "your_interactive_command\r"
14
15interact
将上述脚本保存为myscript.exp,然后通过sshpass传递密码运行:
Bash1sshpass -p 'your_password' expect myscript.exp
注意事项:
- 安全风险:虽然sshpass提供了自动化密码认证的便利,但直接在命令行或脚本中明文存储密码存在安全风险。在生产环境中,强烈建议使用SSH公钥认证替代密码认证,提高安全性。
- 兼容性:sshpass并非所有Linux发行版的默认组件,要手动安装。在使用前,请检查系统中是否已安装,如未安装,可通过包管理器(如apt, yum, dnf等)进行安装。
- 权限与权限:确保使用sshpass的用户对目标远程主机具有适当的访问权限。
猜你喜欢
- 2024-10-08 使用Java连接Shell输出日志(java操作shell命令)
- 2024-10-08 简单介绍如何为linux集群快速配置ntp
- 2024-10-08 hadoop新手入门篇:hadoop集群服务器详细配置教程
- 2024-10-08 创建并使用SSH密钥登录服务器(ssh创建公钥)
- 2024-10-08 Jumpserver开源跳板机安装部署(跳板机远程)
- 2024-10-08 Ansible详解(一)基础安装和配置(ansible-managed)
- 2024-10-08 Ansible的免密码配置(ansible配置免密登录)
- 2024-10-08 掌握SpringBoot-2.3的容器探针:实战篇
- 2024-10-08 一次“诡异”的 Ansible 密码问题排查,最后真相?
- 2024-10-08 巧妙的Linux命令,再来6个(linux 的命令)
你 发表评论:
欢迎- 07-07Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- 07-07Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- 07-07Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- 07-07Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- 07-07IT运维必会的30个工具(it运维工具软件)
- 07-07开源项目有你需要的吗?(开源项目什么意思)
- 07-07自动化测试早就跑起来了,为什么测试管理还像在走路?
- 07-07Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- 最近发表
-
- Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- IT运维必会的30个工具(it运维工具软件)
- 开源项目有你需要的吗?(开源项目什么意思)
- 自动化测试早就跑起来了,为什么测试管理还像在走路?
- Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- Cursor 太贵?这套「Cline+OpenRouter+Deepseek+Trae」组合拳更香
- 为什么没人真的用好RAG,坑都在哪里? 谈谈RAG技术架构的演进方向
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)