前言
sshpass是ansible密码输入的必要条件,在Linux中使用yum install sshpass或者apt-get install sshpass都可以轻松安装,但在macOS新版本中由于安全原因无法直接使用brew install sshpass,需要采用其它安全的办法绕过。
使用sshpass的场景
在macOS下使用ansible命令(inventory文件中使用了密码验证的方式)或者使用iTerm2来完成自动密码填充等场景会使用到sshpass。
比如下面的样例:Inventory文件中使用了ansible_ssh_pass选项
# 编辑inventorycat hosts10.10.66.66 ansible_port=22 ansible_user=root ansible_ssh_pass=test666# 使用ansible命令会失败,提示缺少sshpassansible all -i test.hosts -m ping10.10.66.66 | FAILED! => {"failed": true,"msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"}
安装sshpass及各种常见小问题处理
直接brew install会提示不安全,被拒绝,brew install —force强制安装也不行
可以通过如下方法进行安装
# 先将文件下载至本地,然后执行安装命令❯ wget https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb# 执行如下命令虽然提示了一个错误,但是也顺利安装成功了❯ brew install sshpass.rbError: Failed to load cask: sshpass.rbCask 'sshpass' is unreadable: wrong constant name #<Class:0x00007fb25716b2d0>Warning: Treating sshpass.rb as a formula.==> Downloading http://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz==> Downloading from https://cfhcable.dl.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz######################################################################## 100.0%Warning: A newer Command Line Tools release is available.Update them from Software Update in System Preferences or run:softwareupdate --all --install --forceIf that doesn't show you any updates, run:sudo rm -rf /Library/Developer/CommandLineToolssudo xcode-select --installAlternatively, manually download them from:https://developer.apple.com/download/all/.You should download the Command Line Tools for Xcode 13.0.==> ./configure --prefix=/usr/local/Cellar/sshpass/1.06==> make install🍺 /usr/local/Cellar/sshpass/1.06: 8 files, 77.9KB, built in 13 seconds
可能会由于网络问题,导致无法直接下载sshpass.rb,所以贴上脚本源码
cat >> sshpass.rb <<EOFrequire 'formula'class Sshpass < Formulaurl 'http://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz'homepage 'http://sourceforge.net/projects/sshpass'sha256 'c6324fcee608b99a58f9870157dfa754837f8c48be3df0f5e2f3accf145dee60'def installsystem "./configure", "--disable-debug", "--disable-dependency-tracking","--prefix=#{prefix}"system "make install"enddef testsystem "sshpass"endendEOF
