SSH-skip-pwd 介绍
ssh-skip-pwd是ssh免密码工具。
已测环境:
-
OS: Centos6.X
-
编程语言: python2.6 + pip + pexpect + paramiko
安装前置条件:
-
1,确认python版本为2.6-2.x [非 python3]
-
2,安装 pexpect 、paramiko组件
-
建议:安装pip后使用pip 安装pexpect 、paramiko
安装方法:
-
a,复制ssh-skip-pwd文件到/usr/local/bin/中
-
b,用户root用户为该脚本赋权限
-
chmod 755 /usr/local/bin/ssh-skip-pwd
常见问题列表:
问题1:
Received disconnect from 172.17.0.229: 2: Too many authentication failures
lost connection
解决办法: 编辑/etc/ssh/sshd_config,修改参数MaxAuthTries=2,把2调大一点10-20间即可
参数列表简介:
-f:host列表;指定一个文件全路径;无默认值。
文件内容示例
eg:
iphostname
192.168.1.2node1
192.168.1.3node3
-F: -F /path ,指定一个文件全路径;无默认值。该文件每一行包含:ip、hostname、password(远程服务器用户的密码)
文件内容示例
eg:
iphostnamepassword
192.168.1.2node1123456
192.168.1.3node33456787
-h:帮助;
-p:密码;
-P:ssh port,ssh 的监听端口,默认值:22
-s:服务器hostname或者IP;准备免密码连接其他服务器的机器名或者ip,默认值:localhost
-u:用户名;非root用户做ssh免密码用
-U:用户列表
文件内容示例
eg1:
用户名
user1
user2
......
eg2:
用户名密码
user1123456
user2654321
使用方法:
场景一: 为当前登录用户在A服务器上做ssh免密码登录;
$(#) ssh-skip-pwd -p
场景二:A服务器当前登录用户u1,为自己在服务器B、C上做ssh免密码
$(#) ssh-skip-pwd -f
-f参数文件内容:
第一列为IP,第二列为hostname
10.10.0.1node01
10.10.0.2node02
当用户u1在服务器B、C上密码不一至时
$(#) ssh-skip-pwd -F
-F参数文件内容:
第一列为IP,第二列为hostname
10.10.0.1node01password1
10.10.0.2node02password2
注意当u1为root时,-f -F 文件中的hosts信息会被更新到A服务器的hosts中,同时更新到服务器B、C上
场景三:用户u1登录A服务器并为用户u2做ssh免密码登录服务器B、C
要求:u2在ABCD服务器上的密码一致
$(#) ssh-skip-pwd -u u2 -p
–curt_pwd=
-f参数文件内容:
第一列为IP,第二列为hostname
10.10.0.1node01
10.10.0.2node02
登录在A服务器上的用户u1为D服务器上用户u2做免密码登录服务器B、C
$(#) ssh-skip-pwd -u u2 -p
(当u1用户为root时,需要加入该参数–curt_pwd=
-f参数文件内容:
第一列为IP,第二列为hostname
10.10.0.1node01
10.10.0.2node02
注意当u1为root时,-f 文件中的hosts信息会被更新到A服务器的hosts中,同时更新到服务器B、C上
场景四:A服务器上登录的用户u1为多个用户同时做ssh免密码登录服务器B、C
要求:每个用户在ABCD服务器上密码一致
$(#) ssh-skip-pwd -U
curt_pwd=
-f参数的文件内容:
第一列为IP,第二列为hostname
10.10.0.1node01
10.10.0.2node02
-U参数的文件内容:
第一列为用户名,第二列为密码
user1password1
user2password2
…
登录在A服务器上的用户u1为D服务器上多个用户做免密码登录服务器B、C
$(#) ssh-skip-pwd -U
(当u1用户为root时,需要加入该参数–curt_pwd=
注意当u1为root时,-f 文件中的hosts信息会被更新到A服务器的hosts中,同时更新到服务器B、C上