SSH公钥与私钥详解

一、什么是SSH?

(1)SSH简介

SSH(Secure Shell) 是一种加密的网络通信协议,用于安全地远程访问和管理计算机(如服务器、虚拟机、路由器等)。它通过加密通信防止数据被窃听或篡改,是运维、开发、IT管理的核心工具之一。

一句话理解:SSH 就是用来安全远程控制另一台电脑的工具,就像用命令行控制别人的电脑一样。

(2)SSH核心功能

功能说明与示例
远程登录通过命令行登录云服务器或远程主机
远程执行命令在远程主机上执行程序、脚本或维护任务
文件传输(SCP/SFTP)上传代码、下载日志、备份文件
端口转发(隧道)安全访问内网数据库、实现远程内网穿透

(3)SSH架构组成

  • 客户端(你本地的电脑)
  • 服务端(远程服务器,必须开启 SSH 服务)
  • 认证方式:
    • 用户名+密码(不推荐)
    • 公钥+私钥(推荐,安全、自动化)

(4)📥SSH安装

  • Linux/macOS:自带 SSH,直接用
  • Windows 10+:系统已内置 SSH 客户端,可直接在 CMD/PowerShell/WSL 使用
  • Windows 图形界面工具:推荐使用 MobaXtermXshell

二、📦 什么是公钥和私钥?

(1)密钥对的概念

  • 私钥(private key):仅自己持有,严禁泄露,负责身份验证
  • 公钥(public key):公开给服务器,放入远程主机的 ~/.ssh/authorized_keys 文件中

(2)工作原理

SSH使用非对称加密服务器用公钥加密的挑战,客户端用私钥解密,确保只有私钥持有者能登录。相比传统密码,公钥认证更安全且支持自动化。

(3)相关学习资料

三、🔐如何生成SSH密钥对?

(1)生成密钥步骤(适用于Linux/macOS/Windows)

  • 打开终端(Terminal)或命令行(CMD/PowerShell),执行:ssh-keygen -t ed25519 -C "your_email@example.com"

    • -t ed25519:指定更安全、高效的密钥类型(如:Ed25519)
    • -C:添加注释,方便识别(如:邮箱)
  • 默认路径: ~/.ssh/id_ed25519(私钥), ~/.ssh/id_ed25519.pub(公钥)

  • 按回车确认保存路径和密码(建议设置密码以增强安全)

(2)上传公钥到服务器

执行ssh-copy-id username@server_ip,或手动将公钥文件 id_ed25519.pub 内容追加到服务器用户的 ~/.ssh/authorized_keys 文件中。

(3)测试免密登录

执行ssh username@server_ip,如果不再提示输入密码,则配置成功。

(4)Windows图形操作(可选)

# 下面以 Windows cmd 为例:
C:\Users\xiaod>ssh-keygen -t ed25519 -C "user@example.com"

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):  # 回车选择默认路径
Enter passphrase (empty for no passphrase):                        # 输入密码或回车跳过
Enter same passphrase again:									   # 输入密码或回车跳过
Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxx user@example.com
The key's randomart image is:
+--[ED25519 256]--+
|    .*+o.ooo     |
|    ..+ + . .    |
|     ..+ + o o   |
|     ..o*.E +    |
|      oOS    .   |
|     .=o=+       |
|     +o*ooo      |
|   .+.+.=+       |
|   .o=o.+.       |
+----[SHA256]-----+

默认生成位置:C:\Users\你的用户名\.ssh\,详细请看下图,共包含两个文件,可以使用TXT记事本打开查看信息。
在这里插入图片描述

四、常用SSH命令

命令作用示例
ssh username@server_ip远程登录服务器ssh root@192.168.1.100
scp file.txt username@server_ip:/path上传文件scp test.py user@192.168.1.100:/home/user/
scp username@server_ip:/path/file.txt ./下载文件scp user@192.168.1.100:/home/user/log.txt ./
ssh-keygen生成密钥见上文详细说明
ssh-add添加私钥到 ssh-agent管理密钥自动登录
ssh -i /path/to/private_key username@server_ip指定私钥登录使用特定私钥连接远程服务器
ssh -L local_port:remote_host:remote_port username@server_ip本地端口转发(安全隧道)ssh -L 3306:127.0.0.1:3306 user@remote

五、附录:常见问题与安全建议

  • 常见问题
    • 登录提示 " Permission denied " :检查密钥权限、用户、公钥是否正确上传
    • 私钥泄露怎么办?:立即更换密钥并撤销旧密钥
    • 如何防止暴力破解?:关闭密码登录,仅允许密钥认证,修改默认SSH端口
  • 安全建议
    • 私钥务必妥善保管,不得外泄
    • 设置私钥密码保护
    • 定期更换密钥
    • 使用防火墙限制SSH访问IP
    • 关闭root用户直接登录,改用普通用户切换权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖墩会武术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值