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
实例2:远程连接指定ssh的端口:
命令:sshpass -p 123456 ssh -p 1000 root@192.168.11.11 (当远程主机不是默认的22端口时候)
实例3:从密码文件读取文件内容作为密码去远程连接主机
命令:sshpass -f xxx.txt ssh root@192.168.11.11
实例4:从远程主机上拉取文件到本地
命令: sshpass -p '123456' scp root@host_ip:/home/test/t ./tmp/
补:
ssh的配置文件位置:vim /etc/ssh/sshd_config
去掉#,修改端口号。
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