一.简介

1.定义:

ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。

2.使用 sshpass 原因

使用 sshpass 来进行远程批量操作,批量修改、添加日志清理工具的配置内容;在不影响生产的情况下不停机用 sshpass 去批量修改基础数据,并使用预留的 reload 功能重载数据;此外还有新增一些比如服务的进程监控的功能进行服务化。

这一系列操作都可以通过 sshpass 进行远程操作,只需几行或几十行 shell脚本就可以做到。最大限度提高效率和不影响产能。
 

二.使用

1.格式:

sshpass  选项    命令

常见选项:

-p   password 允许用 -p  参数指定明文密码,然后直接登录远程服务器
-f   filename 跟保存密码的文件名,密码是文件内容的第一行
-e  将环境变量SSPASS作为密码
-d   number 使用数字作为获取密码的文件描述符

2.操作

先安装 sshpass 软件

① 直接远程连接某台主机

sshpass -p '密码' ssh root@192.168.44.20  (默认为22端口)

② 远程连接指定ssh的端口

        使用ssh访问时,A通过ssh首次连接到B,B会将公钥1(host key)传递给A,在首次链接时,会弹出交互验证B的公钥1是否正确,如果正确则输入yes确认,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

但是如果程序自动链接ssh远端机器,就需要由程序自动应答这个确认公钥的交互过程。

③ 从密码文件读取文件内容作为密码去远程连接主机

sshpass -f  xxx.txt  ssh  root@192.168.44.20

④ 从远程主机上拉取文件到本地

文件的拉取与上传使用scp参数

拉取文件

命令: sshpass  -p 'password' scp username@ip:/远程文件目录/远程服务器文件/本地文件目录/

上传文件

命令:sshpass  -p 'password' scp /本地路径/文件名 username@ip:/远程服务器目录

⑤ 从文件读取密码、ip、端口

⑥ 想批量操作连接远程服务器,建议使用脚本文件

⑦ 可以添加-o StrictHostKeyChecking=no选项

表示远程连接时不提示是否输入yes/no

也可以直接去配置文件里面修改

vim  /etc/ssh/ssh_config

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐