在 Windows 系统上的恢复操作

问题背景

在Windows系统中,SSH key的权限设置不当可能会导致SSH连接失败。通常会收到类似”Permissions for ‘private_key’ are too open”的错误提示。

解决步骤

1. 创建.ssh目录

如果.ssh目录不存在,首先需要创建:

mkdir $env:USERPROFILE\.ssh

2. 设置.ssh目录权限

确保.ssh目录具有正确的权限:

icacls $env:USERPROFILE\.ssh /inheritance:r
icacls $env:USERPROFILE\.ssh /grant:r $env:USERNAME`:F

3. 修改SSH密钥权限

私钥文件权限设置

对于私钥文件(通常是id_rsa或id_ed25519),执行以下命令:

icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r
icacls $env:USERPROFILE\.ssh\id_ed25519 /grant:r $env:USERNAME`:F
公钥文件权限设置

对于公钥文件(通常是id_rsa.pub或id_ed25519.pub),可以设置为只读权限:

icacls $env:USERPROFILE\.ssh\id_ed25519.pub /inheritance:r
icacls $env:USERPROFILE\.ssh\id_ed25519.pub /grant:r $env:USERNAME`:R

注意事项

  • 请将id_ed25519id_ed25519.pub替换为你实际使用的密钥文件名
  • 权限修改后,建议重启Git Bash或命令行工具
  • 确保只有当前用户对私钥文件有访问权限
  • 公钥文件设置为只读权限即可,因为它不包含敏感信息

验证方法

修改完成后,可以通过以下命令测试SSH连接:

ssh -T git@github.com

如果看到类似”Hi username! You’ve successfully authenticated…”的消息,说明权限已经正确设置。

在 Linux 系统上的恢复操作

在 Linux 系统上将 SSH 密钥从其他电脑同步到当前电脑上,操作步骤如下:

步骤 1: 复制 SSH 密钥文件

首先,确保你已经拥有旧电脑上的 SSH 密钥文件,并将其传输到新电脑上。SSH 密钥一般存储在 ~/.ssh/ 目录下,主要包括以下几个文件:

  • id_rsa(私钥)
  • id_rsa.pub(公钥)

可以使用任何文件传输工具(如 scp, rsync 或 USB 驱动器)将这些文件传输到新电脑。

使用 scp 传输 SSH 密钥

假设你的旧电脑 IP 地址是 192.168.1.100,用户名是 user,你可以运行以下命令将文件从旧电脑复制到新电脑:

scp user@192.168.1.100:/home/user/.ssh/id_rsa* ~/.ssh/

这条命令会将 id_rsaid_rsa.pub 文件从旧电脑复制到新电脑的 ~/.ssh/ 目录中。

步骤 2: 设置权限

将 SSH 密钥文件复制到新电脑后,需要确保它们的权限设置正确。运行以下命令来确保私钥和公钥的权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

这样可以确保文件的访问权限符合 SSH 的安全要求。