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

3 篇文章 0 订阅

由于有一些场景不能使用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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值