sshpass命令

sshpass工具允许在命令行中指定密码,实现非交互式登录远程服务器和执行命令。它可以用于自动化脚本,但直接暴露密码有安全风险。文章还提到了解决ssh首次连接时的确认提示以及禁用StrictHostKeyChecking的潜在安全隐患。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ssh命令默认不允许以非交互的方式传递密码。sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。

基本语法

sshpass -p 'password' ssh user@hostname command

1、直接远程连接某台主机

sshpass -p password ssh root@192.168.1.2

2、远程执行脚本

sshpass -p password ssh root@192.168.1.2   "sh /path/to/script.sh"

3、执行命令

sshpass -p password ssh root@192.168.1.2 "ls"  //单条命令 

sshpass -p password ssh root@192.168.1.2 "cd /home/;pwd;ls"  //多条命令

4、拷贝文件

sshpass -p password scp root@192.168.1.2:/home/fklds.txt  ~/

(可以用于服务器之间的文件的分发)

5、解决 ssh 首次链接

解决 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,即不再保存已知主机的公钥指纹。这样做同样存在安全风险,需谨慎使用。

=========================================================================

确保在生产环节中密码不会被泄露!!!

参考

https://www.jianshu.com/p/56cde26137b2

https://www.python100.com/html/86119.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值