Linux机器日常运维过程中,经常需要在本地运行脚本执行针对远程主机的命令。正常情况下,ssh登陆远程机器时会提示输入密码,这会影响到脚本的自动执行,(因为shell脚本中没有自动填充密码的命令)。


ssh登陆不能在命令行中指定密码,需要用户交互输入密码,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。

它支持密码从命令行、文件、环境变量中读取。

1、下载:

sudo apt-get install sshpass来安装。


2、sshpass用法和命令介绍

3、用法范例

从当前服务器新建一个名叫ssh_remote_test.sh的文件。

vim ssh_remote_test.sh
#!/bin/bash

sshpass -p 123456 ssh shijianfeng@192.168.64.137 'cd ~/fisco/192.168.64.137/node0 && ls'

其中,远程服务器的ip是192.168.64.137,用户为shijiafeng,密码为123456

登录成功之后执行命令'cd ~/fisco/192.168.64.137/node0 && ls'

保存。

脚本成功通过sshpass工具实现了免密码登录远程服务器。

4. 若是第一次没有反应

 

则使用ssh先登录一遍,再试

Shell脚本免密码登录远程服务器(方法一)_猪笨是念来过倒的博客-CSDN博客_shell免密登录


 

使用sshpass传输文件

  使用方法:

  1、sshpass -p 123456 ssh admin@1.1.1.1 "touch file"  远程创建文件file

  2、sshpass -p 123456 scp file1 admin@1.1.1.2:~         把本地文件file1传入远程机器1.1.1.2上的用户目录下

sshpass结合ssh和scp可以自动完成密码登录,无需手动输入密码 - 走看看

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐