SSH 密钥生成与远程连接

SSH 密钥概述

SSH 密钥基于公钥加密,用于安全认证:

  • 公钥(Public Key):存放在远程服务器上,可公开
  • 私钥(Private Key):保存在本地,必须保密

工作原理:

  1. 客户端生成一对 SSH 密钥(公钥和私钥),并将公钥部署到服务器上。
  2. 客户端发起连接请求,服务器接收请求。
  3. 服务器生成一个随机字符串,并使用存储在服务器上的客户端公钥进行加密,然后发送给客户端。
  4. 客户端使用自己的私钥解密该字符串,并将解密结果返回给服务器。
  5. 服务器验证客户端返回的字符串与自己生成的是否一致,若一致,则认证成功,允许访问。

生成 SSH 密钥

在本地生成 SSH 密钥(以 Linux / Git Bash / WSL 为例):

1
ssh-keygen -t ed25519 -C "your_email@example.com"
  • -t ed25519:推荐现代加密算法,速度快且安全
  • -C:添加注释便于识别
  • 系统会提示输入 passphrase,回车可跳过

生成文件:

  • 私钥:~/.ssh/id_ed25519
  • 公钥:~/.ssh/id_ed25519.pub

Windows Git Bash路径:C:\Users\user\.ssh\id_ed25519


配置远程服务器

将公钥添加到远程服务器:

1
ssh-copy-id user@server_ip

测试 SSH 连接:

1
ssh user@server_ip
  • 如果正确配置,不需要输入服务器密码
  • 如果私钥设置了 passphrase,需要输入一次解锁

使用 SSH Agent 缓存密钥

SSH Agent 是一个后台进程,它负责管理和缓存你的私钥。启动 SSH Agent 后,你只需一次性输入私钥的密码(Passphrase),然后 SSH Agent 会将解密后的密钥存储在内存中。当你使用 SSH 登录时,SSH 客户端会通过 SSH Agent 自动完成身份验证,无需每次都输入密码。

Linux

1
2
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Windows

1
2
3
4
# 以管理员身份启动PowerShell
Start-Service ssh-agent
Set-Service -StartupType Automatic
ssh-add C:\Users\user\.ssh\id_ed25519
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计