# ssh_skip_password **Repository Path**: cson_765/ssh_skip_password ## Basic Information - **Project Name**: ssh_skip_password - **Description**: [ssh-skip-pwd]是ssh免密码工具,使用python语言实现的工具; 主要功能: 本机用户ssh免密码到一台主机; 本机用户自己免密码到多台主机; 本机其他用户为某一用户做免密码到多台主机 本地用户对远程主机中用户免密码到多台主机 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 3 - **Created**: 2016-10-17 - **Last Updated**: 2024-03-27 ## Categories & Tags **Categories**: security-dev **Tags**: None ## README [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: #ip hostname 192.168.1.2 node1 192.168.1.3 node3 -F: -F /path ,指定一个文件全路径;无默认值。该文件每一行包含:ip、hostname、password(远程服务器用户的密码) 文件内容示例 eg: #ip hostname password 192.168.1.2 node1 123456 192.168.1.3 node3 3456787 -h:帮助; -p:密码; -P:ssh port,ssh 的监听端口,默认值:22 -s:服务器hostname或者IP;准备免密码连接其他服务器的机器名或者ip,默认值:localhost -u:用户名;非root用户做ssh免密码用 -U:用户列表 文件内容示例 eg1: #用户名 user1 user2 ...... eg2: #用户名 密码 user1 123456 user2 654321 ...... 使用方法: 场景一: 为当前登录用户在A服务器上做ssh免密码登录; $(#) ssh-skip-pwd -p -s 场景二:A服务器当前登录用户u1,为自己在服务器B、C上做ssh免密码 $(#) ssh-skip-pwd -f -p -f参数文件内容: 第一列为IP,第二列为hostname 10.10.0.1 node01 10.10.0.2 node02 当用户u1在服务器B、C上密码不一至时 $(#) ssh-skip-pwd -F -F参数文件内容: 第一列为IP,第二列为hostname 10.10.0.1 node01 password1 10.10.0.2 node02 password2 注意当u1为root时,-f -F 文件中的hosts信息会被更新到A服务器的hosts中,同时更新到服务器B、C上 场景三:用户u1登录A服务器并为用户u2做ssh免密码登录服务器B、C 要求:u2在ABCD服务器上的密码一致 $(#) ssh-skip-pwd -u u2 -p -f (当u1用户为root时,需要加入该参数--curt_pwd=) -f参数文件内容: 第一列为IP,第二列为hostname 10.10.0.1 node01 10.10.0.2 node02 登录在A服务器上的用户u1为D服务器上用户u2做免密码登录服务器B、C $(#) ssh-skip-pwd -u u2 -p -f -s <服务器D的hostname> (当u1用户为root时,需要加入该参数--curt_pwd=) -f参数文件内容: 第一列为IP,第二列为hostname 10.10.0.1 node01 10.10.0.2 node02 注意当u1为root时,-f 文件中的hosts信息会被更新到A服务器的hosts中,同时更新到服务器B、C上 场景四:A服务器上登录的用户u1为多个用户同时做ssh免密码登录服务器B、C 要求:每个用户在ABCD服务器上密码一致 $(#) ssh-skip-pwd -U -f (当u1用户为root时,需要加入该参数--curt_pwd=) -f参数的文件内容: 第一列为IP,第二列为hostname 10.10.0.1 node01 10.10.0.2 node02 -U参数的文件内容: 第一列为用户名,第二列为密码 user1 password1 user2 password2 ... 登录在A服务器上的用户u1为D服务器上多个用户做免密码登录服务器B、C $(#) ssh-skip-pwd -U -f -s <服务器D的hostname> (当u1用户为root时,需要加入该参数--curt_pwd=) 注意当u1为root时,-f 文件中的hosts信息会被更新到A服务器的hosts中,同时更新到服务器B、C上