sshpass专题---免交互式ssh&MAC下使用SSHPASS

COVER:
https://www.cnblogs.com/kaishirenshi/p/7921308.html
https://www.cnblogs.com/senlinyang/p/7833249.html

sshpass的使用方法

应用范围:可以在命令行直接使用密码来进行远程连接和远程拉取文件。

实例1:直接远程连接某台主机:

命令:sshpass -p xxx ssh root@192.168.11.11

image

实例2:远程连接指定ssh的端口:

命令:sshpass -p 123456 ssh -p 1000 root@192.168.11.11 (当远程主机不是默认的22端口时候)

image

实例3:从密码文件读取文件内容作为密码去远程连接主机

命令:sshpass -f xxx.txt ssh root@192.168.11.11

image

实例4:从远程主机上拉取文件到本地

命令: sshpass -p '123456' scp root@host_ip:/home/test/t ./tmp/

image

补:

ssh的配置文件位置:vim /etc/ssh/sshd_config

image

去掉#,修改端口号。

sshpass的安装:


**Ubuntu**:
apt-get  install sshpass

**centos:**

 wget [http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz](http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz) 
 tar xvzf sshpass-1.05.tar.gz 

 cd sshpass-1.05.tar.gz 

 ./configure 
 make 
 make install

MAC

cover:https://blog.csdn.net/joeblackzqq/article/details/46598189
由于有一些场景不能使用ssh私钥来实现免登,因此需要想其它办法解决一下这个问题。
安装sshpass

试图使用homebrew安装

$ 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强制安装

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

成功了。。。

编译安装

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路径可以去掉,这样就会安装到默认目录中。

使用方式

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

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

简单的使用方式

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

#!/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  

使用方法

$ 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  

推荐阅读更多精彩内容