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

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

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


1、下载:

sudo apt-get install sshpass来安装。

Shell 脚本 ssh免密码 登录 远程服务器 sshpass用法示例_linux

2、sshpass用法和命令介绍

Shell 脚本 ssh免密码 登录 远程服务器 sshpass用法示例_命令行_02


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'

保存。

Shell 脚本 ssh免密码 登录 远程服务器 sshpass用法示例_远程服务器_03

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


4. 若是第一次没有反应


Shell 脚本 ssh免密码 登录 远程服务器 sshpass用法示例_linux_04

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

Shell 脚本 ssh免密码 登录 远程服务器 sshpass用法示例_linux_05

Shell 脚本 ssh免密码 登录 远程服务器 sshpass用法示例_linux_06