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

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


安装sshpass 

试图使用homebrew安装 

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


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

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

Shell代码  mac下使用sshpass实现ssh记住密码
  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 [email protected] -p22  
  17.             ;;  
  18.         b|192.168.4.151)  
  19.             exec /usr/local/bin/sshpass -p 'sdfsdf'  ssh [email protected] -p22  
  20.             ;;  
  21.         c|192.168.4.2)  
  22.             exec /usr/local/bin/sshpass -p 'wfssfs'  ssh [email protected] -p22  
  23.             ;;  
  24.         *)  
  25.         echo "Error, No host"  
  26.         ;;  
  27.     esac  



使用方法 

Shell代码  mac下使用sshpass实现ssh记住密码
  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代码  mac下使用sshpass实现ssh记住密码
  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代码  mac下使用sshpass实现ssh记住密码
  1. sshp host  



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

Shell代码  mac下使用sshpass实现ssh记住密码
  1. 10.101.81.238 123456  

相关推荐