SSH-skip-pwdSSH 免密码工具

联合创作 · 2023-09-30 11:22

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 <password> -s <hostname/ip>


场景二:A服务器当前登录用户u1,为自己在服务器B、C上做ssh免密码


$(#) ssh-skip-pwd -f <host列表文件全路径>  -p <password>


-f参数文件内容:


第一列为IP,第二列为hostname


10.10.0.1node01


10.10.0.2node02


当用户u1在服务器B、C上密码不一至时


$(#) ssh-skip-pwd -F <host\pwd列表文件全路径>


-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 <u2 password>  -f <host列表文件全路径> (当u1用户为root时,需要加入该参数--curt_pwd=<root 的密码吗>)


-f参数文件内容:


第一列为IP,第二列为hostname


10.10.0.1node01


10.10.0.2node02


登录在A服务器上的用户u1为D服务器上用户u2做免密码登录服务器B、C


$(#) ssh-skip-pwd -u u2 -p <u2 password>  -f <host列表文件全路径> -s <服务器D的hostname> (当u1用户为root时,需要加入该参数--curt_pwd=<root 的密码吗>)


-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 <user/pwd 列表文件> -f <host列表文件全路径> (当u1用户为root时,需要加入该参数--curt_pwd=<root 的密码吗>)


-f参数的文件内容:


第一列为IP,第二列为hostname


10.10.0.1node01


10.10.0.2node02


-U参数的文件内容:


第一列为用户名,第二列为密码


user1password1


user2password2


...


登录在A服务器上的用户u1为D服务器上多个用户做免密码登录服务器B、C


$(#) ssh-skip-pwd -U <user/pwd 列表文件> -f <host列表文件全路径> -s <服务器D的hostname>  (当u1用户为root时,需要加入该参数--curt_pwd=<root 的密码吗>)


注意当u1为root时,-f 文件中的hosts信息会被更新到A服务器的hosts中,同时更新到服务器B、C上

浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报