Linux服务器批量ssh免密登陆

  1. 脚本当前目录下创建host_list 文件,需要免密登陆的服务器IP地址一行一个。
  2. 做免密登陆的用户已经使用ssh-keygen创建了公钥。
  3. python3执行脚本。
import paramiko
"""
每个服务器的密码都一样
host_list文件格式:每行一个IP地址
[root@jump tzhli]# cat host_list 
10.0.0.214
10.0.0.213
10.0.0.212
"""
user = "root"
passwd = "123"

def exec_commit(host, cmd, port=22):
    """远程执行系统命令"""
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    #ssh.connect(hostname=host, port=port)
    ssh.connect(hostname=host, port=22, username=user, password=passwd)
    stdin, stdout, stderr = ssh.exec_command(cmd)
    res, err = stdout.read(), stderr.read()
    result = res if res else err
    ssh.close()
    return result.decode().strip()

if user == "root":
    user_home = "/root"
else:
    user_home = "/home/%s" % (user)

with open("%s/.ssh/id_rsa.pub" % (user_home),"r",encoding="utf-8") as key_file:
    pub_key = key_file.read().strip("\n")

with open("./host_list","r",encoding="utf-8") as host_flie:
    read_file_list = host_flie.readlines()

for host_str in read_file_list:
    host = host_str.strip("\n")
    if len(host) == 0:
        continue
    exec_commit(host=host,cmd="echo %s >> %s/.ssh/authorized_keys" % (pub_key,user_home))
    print("%s服务器的公钥已添加。" % (host))



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值