博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mac下使用sshpass实现ssh记住密码
阅读量:6212 次
发布时间:2019-06-21

本文共 2362 字,大约阅读时间需要 7 分钟。

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

安装sshpass
试图使用homebrew安装

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

这个萌卖的好。。。。
使用homebrew强制安装

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

成功了。。。
编译安装

Shell代码  
  1. wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz  
  2. tar xvzf sshpass-1.05.tar.gz  
  3. ./configure --prefix=/usr/local/Cellar/sshpass/1.05  
  4. make  
  5. sudo make install  

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

Java代码  
  1. sshpass -p 'ssh_password' ssh xxx.xxx.xxx.xxx  

可以看到这种方式其实还是要在命令里指定host+密码登录,还是不够方便。期待的方式是只需要指定host即可,密码神马的,能自己处理。
简单的使用方式
写一个脚本,记录一些常用的用户名与密码,通过简单的选择即可完成ssh登录。
创建一个文件sshp。

Shell代码  
  1. #!/bin/bash  
  2. cat <<MENU  
  3.     a   =>  10.101.81.238  
  4.     10.101.81.238   =>  10.101.81.238  
  5.     b   =>  192.168.4.151  
  6.     192.168.4.151   =>  192.168.4.151  
  7.     c   =>  192.168.4.2  
  8.     192.168.4.2     =>  192.168.4.2  
  9.   
  10. >>> 请输入ip或序号 <<<  
  11. MENU  
  12.     echo -n "Your choose:"  
  13.     read host  
  14.     case "$host" in  
  15.         a|10.101.81.238)  
  16.             exec /usr/local/bin/sshpass -p 123456  ssh root@10.101.81.238 -p22  
  17.             ;;  
  18.         b|192.168.4.151)  
  19.             exec /usr/local/bin/sshpass -p 'sdfsdf'  ssh root@192.168.4.151 -p22  
  20.             ;;  
  21.         c|192.168.4.2)  
  22.             exec /usr/local/bin/sshpass -p 'wfssfs'  ssh root@192.168.4.2 -p22  
  23.             ;;  
  24.         *)  
  25.         echo "Error, No host"  
  26.         ;;  
  27.     esac  

使用方法

Shell代码  
  1. $ sshp  
  2.     a   =>  10.101.81.238  
  3.     10.101.81.238   =>  10.101.81.238  
  4.     b   =>  192.168.4.151  
  5.     192.168.4.151   =>  192.168.4.151  
  6.     c   =>  192.168.4.2  
  7.     192.168.4.2     =>  192.168.4.2  
  8.   
  9. >>> 请输入ip或序号 <<<  
  10. Your choose:a  
  11. # ssh login success  

可以看到,相比第一种方法,这种模式要简单很多。
更简单的使用方法,应该是只需要输入 sshp host,就可以完成ssh登录。
更简单的使用方式
使用一个文件存储host、password对,自行根据host匹配密码,并登录。
创建一个脚本,名为sshp,内容如下。

Shell代码  
  1. #!/bin/bash  
  2.   
  3. RC_ERR_NO_HOST=11  
  4. RC_ERR_NO_PASSWORD=21  
  5. RC_SUCCESS=0  
  6.   
  7. pass_path=~/.ssh/sshp_pass  
  8.   
  9. host=$1  
  10.   
  11. # arguments   
  12. if [ -z $host ]; then  
  13.     echo "ERR_NO_HOST, please input host."  
  14.     exit $RC_ERR_NO_HOST    
  15. fi  
  16.   
  17. # read file  
  18. pwd=`grep $host\  $pass_path | cut -d' ' -f 2`  
  19. if [ -z $pwd ]; then  
  20.     echo "ERR_NO_PASSWORD, please record password first. file path $pass_path"  
  21.     exit $RC_ERR_NO_PASSWORD  
  22. fi  
  23.   
  24. exec sshpass -p $pwd  ssh root@$host -p22  
  25. exit $RC_SUCCESS  

使用方法

Shell代码  
  1. sshp host  

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

Shell代码  
  1. 10.101.81.238 123456  

除了可以动态指定host以外,还可以实现 用户名、端口的自定义,暂时没有需求,就这样吧。^_^

转载于:https://www.cnblogs.com/fanss/p/9056468.html

你可能感兴趣的文章
10.2.0.5启动enterprise manager
查看>>
Javascript性能分析——工具(YUI Profiler)上
查看>>
JavaScript Lab - Articles - Non-recursive Preorder Traversal - Part 1
查看>>
TOMCAT数据库连接池的配置方法总结(待续)
查看>>
[leetcode]Binary Tree Level Order Traversal
查看>>
windows2008中IIS7详细安装图文教程加fastcgi模式PHP配置教程
查看>>
Z-INDEX的最小值和最大值
查看>>
源代码管理安装大全
查看>>
Hadoop 权限管理(转)
查看>>
KMP算法
查看>>
uva10125
查看>>
CSS3 经典教程系列:CSS3 线性渐变(linear-gradient)
查看>>
最难面试的公司以及常见面试问题
查看>>
虚拟机vmware与本地磁盘共享方法
查看>>
微信公众平台消息接口开发(12)消息接口Bug
查看>>
Linux下命令行显示当前全路径方法
查看>>
Java数据库连接字符串
查看>>
hdu 4508(完全背包)
查看>>
多条insert同时执行的优化处理方式
查看>>
epoll在LT和ET模式下的读写方式
查看>>