由于有一些场景不能使用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
可以看到,相比第一种方法,这种模式要简单很多。
更简单的使用方法,应该是只需要输入 sshp host,就可以完成ssh登录。
更简单的使用方式
使用一个文件存储host、password对,自行根据host匹配密码,并登录。
创建一个脚本,名为sshp,内容如下。
#!/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
使用方法
sshp host
创建一个文件 ~/.ssh/sshp_pass,存放 host 与密码数据,格式为"host password"。
例如
10.101.81.238 123456
除了可以动态指定host以外,还可以实现 用户名、端口的自定义,暂时没有需求,就这样吧。^_^
分享到:
相关推荐
sshpass用于非交SSH的密码验证,一般用在sh脚本中,无须再次输入密码。 它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。 其默认没有安装,需要手动安装 安装 ...
sshpass: 用于非交互的 ssh 密码验证 sshpass: 用于非交互的 ssh 密码验证 sshpass: 用于非交互的 ssh 密码验证
sshpass(yum install sshpass安装):用于ssh登陆时自动输入密码 思路: 服务器A上生成公钥,将公钥分发给所有SUT的test用户,使得所有SUT的test用户可以免密登陆 修改/etc/ssh/sshd_config配置文件,使得可以root...
centos下批量实现多台服务器之间的ssh无密码登录的信任关系
使用sshLooterC抓取SSH密码1
公司的版本服务器使用了GIT,每次pull/push都要提示输入密码,比较烦。而且由于网络速率比较慢,等好一段时间才能输密码。为了避免输入密码,折腾了好久。
ssh免密码;ssh免密码;ssh免密码;ssh免密码;ssh免密码;
使用ssh、scp不需要密码。刚好项目遇到这个问题,学学挺好的。
hadoop集群服务器节点之间,无密码登录!!服务器本节点hostname无密码登录。
linux下怎样设置ssh无密码登录.docx
主要介绍了详解Java使用Jsch与sftp服务器实现ssh免密登录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
服务器Centos集群上实现ssh无密码相互访问,解决bash scp command not found问题
本文主要介绍三种方法,在Mac下使用SSH连接远程Linux服务器。 方法一:使用终端 1.打开终端,点击新建远程连接 2.点击加号,然后添加自己服务器的IP地址 3.点击右侧的服务器,然后在下方输入用户名,选择最下方的 ...
主要介绍了Linux下实现SSH免密码登录和实现秘钥的管理、分发、部署SHELL脚本分享,本文先是讲解了SSH免密码登录的创建过程,然后给出了可以分发、部署密钥的Shell脚本,需要的朋友可以参考下
弱口令ssh弱密码ftp集合(5亿条常用)
在linux上实现几台机ssh无密码相互登录
linux系统下的ssh免密码登录机制原理及范例
由于项目开发需要使用到QSSh,但是网站上的资源很少,所以自己找了源码进行编译出了库文件进行使用,QSsh源码已编译含有库文件,可直接用于程序链接,需要QSsh开发不要错过哦
主要介绍了python使用paramiko实现ssh的功能详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
android 实现 ssh功能,终端程序为免费程序,有服务端功能,可以调试通过,特此贡献给需要的同仁们!