ssh-copy-id复制密钥

本文介绍了一种使用bash脚本批量进行SSH公钥授权的方法。通过两段bash脚本示例,实现了对目标主机的SSH免密登录配置。第一段脚本针对默认SSH端口的主机进行公钥复制;第二段则针对设置了非标准SSH端口2234的主机。注意在实际操作中要确保正确的主机名及端口号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


for i in `cat ahost`;do ssh-copy-id -i /root/.ssh/id_rsa.pub root@$i;done

for i in `cat ahost`;do ssh-copy-id -i /root/.ssh/id_rsa.pub "-p 2234 root@$i";done



注意:`与~同键



      本文转自flayber  51CTO博客,原文链接:http://blog.51cto.com/406647516/1922011,如需转载请自行联系原作者


<think>好的,用户现在想了解ssh-copy-id的用法以及解决相关的问题。我需要结合之前提供的引用内容,整理出清晰的步骤和常见问题解决方法。首先,用户的历史对话中已经提到了SSH密钥权限错误的修复,现在转向ssh-copy-id的使用,可能需要详细说明这个命令的作用和基本用法。根据引用[1]、[2]、[3],ssh-copy-id主要用于将本地公钥复制到远程服务器的authorized_keys文件中,实现免密登录。但引用[1]中提到的一个常见错误是“Noidentities found”,这可能是因为没有指定正确的公钥路径或者用户没有生成密钥。需要解释如何生成密钥对,并正确使用ssh-copy-id。接下来,用户可能遇到的其他问题,比如引用[4]中的“REMOTEHOSTIDENTIFICATION HASCHANGED”错误,这通常是由于服务器密钥变化导致的,需要指导用户如何删除known_hosts中的旧条目。另外,引用[2]和[3]提到权限问题,比如.ssh目录和authorized_keys文件的权限设置不正确,可能导致ssh-copy-id失败。需要将这些内容整合到常见问题解决中,确保用户了解权限调整的重要性。 用户可能需要分步的用法说明,包括基本命令格式、指定端口、指定用户等参数的使用方法。同时,常见问题部分需要覆盖密钥不存在、权限错误、连接拒绝、主机密钥变更等情况,每个问题给出对应的解决步骤和命令示例。 最后,生成的相关问题需要与ssh-copy-idSSH免密登录相关,比如密钥生成、权限配置、调试方法、与其他工具的比较等,帮助用户进一步学习。</think>### SSH-copy-id 使用方法及常见问题解决 #### 一、核心功能与基本用法 `ssh-copy-id` 是自动化部署 SSH 公钥的工具,可将本地公钥写入远程服务器的 `authorized_keys` 文件,实现免密登录[^2][^3]。基本命令格式: ```bash ssh-copy-id [-i 公钥路径] [-p 端口] 用户名@主机名 ``` **典型应用场景**: 1. **默认公钥部署**(使用 `~/.ssh/id_rsa.pub`): ```bash ssh-copy-id user@remote-server ``` 2. **指定非默认公钥**(如自定义密钥 `custom_key.pub`): ```bash ssh-copy-id -i ~/.ssh/custom_key.pub user@remote-server ``` 3. **带端口参数**(适用于非22端口服务器): ```bash ssh-copy-id -p 2222 user@remote-server ``` #### 二、执行流程解析 1. 自动创建远程 `~/.ssh` 目录(若不存在) 2. 将公钥追加到 `authorized_keys` 文件 3. 自动设置远程目录权限: - `~/.ssh` → `700` - `authorized_keys` → `600`[^2] #### 三、常见问题解决 ##### 1. **ERROR: No identities found** **现象**:引用[1]中出现的密钥未找到错误 **原因**: - 未生成密钥- 指定了不存在的公钥路径 **解决方案**: ```bash # 生成默认密钥对(按提示操作) ssh-keygen -t rsa -b 4096 # 明确指定公钥路径 ssh-copy-id -i ~/.ssh/custom_key.pub user@host ``` ##### 2. **权限拒绝 (Permission denied)** **排查步骤**: - **检查本地密钥权限**: ```bash chmod 600 ~/.ssh/id_rsa # 私钥 chmod 644 ~/.ssh/id_rsa.pub # 公钥 ``` - **验证远程权限**(登录服务器后执行): ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` ##### 3. **REMOTE HOST IDENTIFICATION HAS CHANGED** **触发条件**:服务器密钥变更导致安全警告(如引用[4]) **解决方法**: ```bash # 删除已知主机中的旧记录 ssh-keygen -R remote-server-ip # 或手动编辑known_hosts文件 vim ~/.ssh/known_hosts ``` ##### 4. **Connection refused 问题** **诊断方法**: ```bash # 测试SSH端口连通性 telnet remote-server 22 # 检查远程SSH服务状态(需登录服务器) systemctl status sshd ``` #### 四、高级技巧 - **批量部署**(需预先配置好SSH连接): ```bash for server in server1 server2 server3; do ssh-copy-id user@$server done ``` - **调试模式**(显示详细执行过程): ```bash ssh-copy-id -v user@remote-server ``` #### 五、跨平台注意事项 - **Windows系统**:使用 Git Bash 或 WSL 执行命令 - **密钥存储位置**: - Linux/macOS: `~/.ssh/` - Windows: `C:\Users\username\.ssh\` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值