批量上传公钥到linux服务器

一直以来,都通过ssh-copy-id在手动上传公钥,想着如果有上千台服务器需要上传公钥的话,这个方法就行了。试着实现下批量上传公钥到服务器,介绍本人试的一个方法。

1: 先通过python脚本来试一台机器,python脚本如下:

#!/usr/bin/python
 
import sys 
import pexpect
 
ip = sys.argv[1]
password = sys.argv[2]
expect_list = [‘(yes/no)‘, ‘password:‘]
 
p = pexpect.spawn(‘ssh-copy-id %s‘ % ip)
try:
    while True:
        idx = p.expect(expect_list)
        print p.before + expect_list[idx],
        if idx == 0:
            print "yes"
            p.sendline(‘yes‘)
        elif idx == 1:
            print password
            p.sendline(password)
except pexpect.TIMEOUT:
    print >>sys.stderr, ‘timeout‘
except pexpect.EOF:
    print p.before
    print >>sys.stderr, ‘<the end>‘

使用方法: python sendpublic.py 192.168.2.10 password #用户名和密码没错一般都可以。

2: 上面的python结合shell实现批量上传

把服务器的ip和密码列在一个txt文件中,例如(b.txt):

192.168.1.1 password1

192.168.1.2 password2

192.168.1.3 password3

实现批量上传借助的shell程序如下:

cat a.txt |while read line;do
    ip=`echo $line | awk ‘{print $1}‘ #提取ip
    password=`echo $line | awk ‘{print $2}‘` #提取password
    python sendpublic.py $ip $password
done

如上所述,需要注意:

a.txt的格式,第一个参数是ip,第二个是密码。中间用空格隔开,一般使用这个上批量上传公钥到服务器是没问题的。

如果公钥没在默认位置的话,python脚本里面的这个语句p = pexpect.spawn(‘ssh-copy-id %s‘ % ip),把ssh-copy-id改为 ssh-copy-id -i 公钥位置 即可。

另外,上面的程序在运行之前都要先生成个公钥和密码ssh-keygen -t rsa(两次回车即可)

时间: 2024-08-08 11:40:50

批量上传公钥到linux服务器的相关文章

如何在secureCTR上使用公钥登陆Linux服务器?

我以前一直使用口令通过ssh协议登陆Linux服务器,最近公司要求使用公钥登陆.说是安全,好吧.那我们整一下.那到底使用公钥登陆服务器有什么好处呢?其实我理解是这样的: 当我们创建了公钥和私钥(这是一对,登陆时要使用私钥解密公钥)后,把公钥给任何服务器,登陆Linux服务器时,只要我们的私钥不变,登陆任何服务器都是不需要密码的.而是使用公钥私钥进行身份验证.安全的多!这里也隐含了一个小细节,就是不要把你的私钥给丢了.否则,你想想,几百台服务器上好不容易把你的公钥配置好,而你的私钥丢失,怎么办?私

SecureCRT上使用公钥登陆Linux服务器

SecureCRT部分配置 1.首先生成公钥. 打开SecureCRT(我的版本为7.0,估计其他版本基本相同)程序,点击菜单栏的“工具”->“创建公钥”.按照步骤执行.其中一步比较重要就是选择公钥的格式.建议选择“OpenSSH”,否则在服务器端使用时需要转换为OpenSSH各式.何必多次一举呢.所以这里必须选择“OpenSSH”.如果选错了.重新生成一次就可以了. 然后选择公钥私钥存放的地方.默认Identity是私钥,Identity.pub是公钥. 2.把Identity.pub文件上传

putty windows上传文件到linux服务器 &amp; 从linux服务器 下载文件到 windows

从putty官网下载putty软件:putty.exepscp.exepsftp.exe等软件 也可以自己下windows安装包putty-0.63-installer.exe 本人直接下载putty-0.63-installer.exe安装包了,然后直接安装 使用pscp方式从windows上传文件到linux服务器 在CMD命令行中进入到putty安装目录 输入pscp 回车 pscp 跟我们平时使用的linux scp命令操作的都是类似的 现在我直接从windows本地上传一个文件到lin

sftp方式从windows上传文件到Linux服务器

今天我一直用scp想实现从windows上传文件到Linux服务器,但是鼓捣了半天也没有实现.后来查资料才发现,scp实现文件的上传和下载貌似只能在Linux和Linux之间实现.(欢迎指正不对的地方) 后来开始转用sftp来解决上述问题,其中也是遇到了不少坑,下面说一下比较合理的步骤: 首先声明,我是在Windows上通过xshell5来连接远程服务器的,连接成功后如下图: 然后用sftp连接远程服务器:sftp 192.168.167.178: 再然后,修改本地上传的文件夹路径:先点击这个按

SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案

SpringBoot 上传文件到linux服务器报错java.io.FileNotFoundException: /tmp/tomcat.50898-- 报错原因: 解决方法 java.io.IOException: java.io.FileNotFoundException: /tmp/tomcat.5089835798184465073.8081/work/Tomcat/localhost/ROOT/www/server/apache-tomcat-8.5.32/webapps/jxmsto

pscp命令上传文件到linux服务器

项目开发过程中,经常需要从windows向linux服务器上传下载文件.下面简单介绍一下如何上传下载文件. 下载安装putty软件:https://pan.baidu.com/s/1bpagyyr cmd进入putty的安装目录: 确保有文件:pscp.exe 上传:pscp d:\upload.txt [email protected]:/home/username/upload/upload.txt 下载: pscp [email protected]:/home/username/down

你知道哪些linux命令,能把文件上传到远程linux服务器

多数情况下 企业的服务基本都是部署在linux服务器 那对于测试同学,必须掌握基本的linux命令 至少要知道怎么部署整体环境 部署过程中,经常需要的操作,是向服务器上传部署包 你一般都是通过什么方式上传到服务器的? 方式很多中 如果你是securecrt工具,那就非常简单了 sz & rz 轻松搞定上传&下载 如果是纯命令操作呢? 如果你本机是mac,没有用到任何工具,仅仅只是用的终端 怎么样向服务器上传部署包? ----- 方式同样有很多种,今天分享ssh方式,很简单(一行命令搞定!)

Windows 使用ssh secure file transfer上传文件到linux服务器

SSH Secure Shell Client是SSH命令行控制终端,你应该是用SSH Secure File Transfer Client传输文件.这里只谈论他的使用方法,关于SSH配置你再找其他文章.一.登陆方法你可以在登陆的SSH Secure Shell Client里单击工具栏里(或菜单)的New File Transfer Window,就直接登陆了.也可以单独运行SSH Secure File Transfer Client.登陆非常简单,填写Host Name(你的服务器地址或

怎样上传文件到linux服务器?

我们知道,云主机文件传输是一件相对复杂的事情,经常需要搭建FTP服务器或者是借助其他工具来完成.下面为大家介绍一种简单易操作的传输文件到Linux服务器的方法.对于行云管家来说,Linux文件传输同Windows文件传输一样,我们为每一台Linux主机配置了一个1G的网盘作为中间介质来实现客户端和主机之间的文件传输.那么如何传输文件到Linux服务器?一.什么是主机网盘?为了实现用户更快.更安全.更省钱的文件传输需求,我们在用户将主机导入行云管家平台时,自动为每台主机分配了一个主机网盘,该网盘将