服务器 SSH 与 RDP 接入控制怎么自动化批量分发 SSH 公钥

秋敏姑娘_4936

秋敏姑娘_4936

2026-10-24

815人浏览

原创

ssh公钥批量分发本质是将专用密钥对的公钥自动写入目标服务器的~/.ssh/authorized_keys文件,关键在于绕过首次连接的交互(密码输入、主机确认),并适配无ssh-copy-id、禁用密码登录等约束;需生成独立密钥对(推荐ed25519)、用sshpass或expect实现免交互推送,并验证权限与登录有效性。

服务器 ssh 与 rdp 接入控制怎么自动化批量分发 ssh 公钥

SSH 公钥的批量分发本质是把本地私钥对应的公钥,自动、安全地写入目标服务器指定用户的 ~/.ssh/authorized_keys 文件中。关键不在“分发动作”本身,而在于如何绕过首次连接时的交互(密码输入、yes/no 主机确认),并适配不同环境约束(如无 ssh-copy-id、禁用密码登录、非 root 用户等)。

准备专用密钥对,避免混用

不要复用已有密钥(如日常登录用的 id_rsa)。为批量管理单独生成一对密钥,便于权限隔离和事后审计:

  • 用更安全的 Ed25519 算法: ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_batch -N "" -C "batch-admin"
  • 生成后检查:私钥 id_ed25519_batch 必须严格保护(chmod 600),公钥 id_ed25519_batch.pub 用于分发
  • 若目标系统较老(如 CentOS 6),可退而使用 RSA:ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_batch -N ""

用 sshpass 实现免交互密码推送(最通用)

当目标服务器仍允许密码登录时,这是最简单可靠的批量方式。需提前安装 sshpass:

  • CentOS/RHEL:yum install -y sshpass;Ubuntu/Debian:apt install -y sshpass
  • 假设有主机列表 servers.txt,每行格式为 user@ip 或 user@ip:port
  • 执行命令一次性分发:
    while read host; do
          sshpass -p 'your_password' \
            ssh-copy-id -i ~/.ssh/id_ed25519_batch.pub \
            -o StrictHostKeyChecking=no \
            "$host"
        done 
      
  • 注意:-o StrictHostKeyChecking=no 跳过首次主机指纹确认;密码明文写在脚本里有风险,生产环境建议改用变量或读取加密文件

用 expect 脚本应对无 ssh-copy-id 或特殊交互场景

某些精简系统(如容器、嵌入式设备)可能没装 ssh-copy-id,或需要处理多级提示(如 sudo 密码、二次确认)。这时用 expect 更灵活:

  • 示例脚本片段(保存为 pushkey.exp):
    #!/usr/bin/expect -f
    set timeout 30
    set host [lindex $argv 0]
    set user [lindex $argv 1]
    set pass [lindex $argv 2]
    set keyfile [lindex $argv 3]
    
    spawn ssh $user@$host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    expect {
      "yes/no" { send "yes\r"; exp_continue }
      "password:" { send "$pass\r" }
    }
    expect eof
  • 调用方式:./pushkey.exp 192.168.1.100 root mypass ~/.ssh/id_ed25519_batch.pub
  • 优势:不依赖 ssh-copy-id,可嵌入任意 shell 命令;劣势:需额外安装 expect,脚本维护成本略高

分发后验证与加固建议

公钥写入成功不等于能立刻免密登录,还需检查几处:

  • 登录测试:ssh -i ~/.ssh/id_ed25519_batch -o IdentitiesOnly=yes user@ip uptime,加 IdentitiesOnly=yes 防止客户端自动尝试其他密钥干扰
  • 检查服务端权限:~/.ssh 目录应为 700,authorized_keys 应为 600,否则 SSH 会拒绝读取
  • 若已禁用密码登录(PasswordAuthentication no),务必确保公钥分发 100% 成功后再 reload sshd,否则可能锁死
  • RDP 与 SSH 是两类协议,Windows 服务器的远程接入控制需另配 Windows 组策略或 WinRM,不能靠 SSH 密钥解决
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

940

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3112

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1036

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

929

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

474

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2856

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5332

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

827

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习