mac下使用sshpass实现ssh记住密码

来源:互联网 发布:java高并发与服务器 编辑:程序博客网 时间:2024/05/07 23:57

由于有一些场景不能使用ssh私钥来实现免登,因此需要想其它办法解决一下这个问题。

安装sshpass

试图使用homebrew安装
Shell代码 收藏代码

$ brew install sshpass  Error: No available formula for sshpass  We won't add sshpass because it makes it too easy for novice SSH users to  ruin SSH's security.  

这个萌卖的好。。。。

使用homebrew强制安装
Shell代码 收藏代码

brew install https://raw.github.com/eugeneoden/homebrew/eca9de1/Library/Formula/sshpass.rb

成功了。。。

编译安装
Shell代码 收藏代码

wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz  tar xvzf sshpass-1.05.tar.gz  ./configure --prefix=/usr/local/Cellar/sshpass/1.05  make  sudo make install  

编译安装的步骤是从brew的步骤中copy出来的,绝对可行。其中./configure 后面的prefix路径可以去掉,这样就会安装到默认目录中。

使用方式
Java代码 收藏代码

sshpass -p 'ssh_password' ssh xxx.xxx.xxx.xxx  

可以看到这种方式其实还是要在命令里指定host+密码登录,还是不够方便。期待的方式是只需要指定host即可,密码神马的,能自己处理。

简单的使用方式
写一个脚本,记录一些常用的用户名与密码,通过简单的选择即可完成ssh登录。
创建一个文件sshp。
Shell代码 收藏代码

#!/bin/bash  cat <<MENU      a   =>  10.101.81.238      10.101.81.238   =>  10.101.81.238      b   =>  192.168.4.151      192.168.4.151   =>  192.168.4.151      c   =>  192.168.4.2      192.168.4.2     =>  192.168.4.2  >>> 请输入ip或序号 <<<  MENU      echo -n "Your choose:"      read host      case "$host" in          a|10.101.81.238)              exec /usr/local/bin/sshpass -p 123456  ssh root@10.101.81.238 -p22              ;;          b|192.168.4.151)              exec /usr/local/bin/sshpass -p 'sdfsdf'  ssh root@192.168.4.151 -p22              ;;          c|192.168.4.2)              exec /usr/local/bin/sshpass -p 'wfssfs'  ssh root@192.168.4.2 -p22              ;;          *)          echo "Error, No host"          ;;      esac  

使用方法
Shell代码 收藏代码

$ sshp      a   =>  10.101.81.238      10.101.81.238   =>  10.101.81.238      b   =>  192.168.4.151      192.168.4.151   =>  192.168.4.151      c   =>  192.168.4.2      192.168.4.2     =>  192.168.4.2  >>> 请输入ip或序号 <<<  Your choose:a  # ssh login success  

可以看到,相比第一种方法,这种模式要简单很多。

更简单的使用方法,应该是只需要输入 sshp host,就可以完成ssh登录。

更简单的使用方式
使用一个文件存储host、password对,自行根据host匹配密码,并登录。

创建一个脚本,名为sshp,内容如下。
Shell代码 收藏代码

#!/bin/bash  RC_ERR_NO_HOST=11  RC_ERR_NO_PASSWORD=21  RC_SUCCESS=0  pass_path=~/.ssh/sshp_pass  host=$1  # arguments   if [ -z $host ]; then      echo "ERR_NO_HOST, please input host."      exit $RC_ERR_NO_HOST    fi  # read file  pwd=`grep $host\  $pass_path | cut -d' ' -f 2`  if [ -z $pwd ]; then      echo "ERR_NO_PASSWORD, please record password first. file path $pass_path"      exit $RC_ERR_NO_PASSWORD  fi  exec sshpass -p $pwd  ssh root@$host -p22  exit $RC_SUCCESS  

使用方法
Shell代码 收藏代码

sshp host  

创建一个文件 ~/.ssh/sshp_pass,存放 host 与密码数据,格式为”host password”。
例如
Shell代码 收藏代码

10.101.81.238 123456

原文地址:http://tinyhema.iteye.com/blog/2093795

0 0