SSH公钥与私钥详解

2025-07-22 08:44:31      匈牙利世界杯

文章目录

一、什么是SSH?(1)SSH简介(2)SSH核心功能(3)SSH架构组成(4)📥SSH安装

二、📦 什么是公钥和私钥?(1)密钥对的概念(2)工作原理(3)相关学习资料

三、🔐如何生成SSH密钥对?(1)生成密钥步骤(适用于Linux/macOS/Windows)(2)上传公钥到服务器(3)测试免密登录(4)Windows图形操作(可选)

四、常用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 图形界面工具:推荐使用 MobaXterm 或 Xshell

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

(1)密钥对的概念

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

(2)工作原理

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

(3)相关学习资料

腾讯云:(图解)只用10分钟,一次性搞懂公钥和私钥阿里云:什么是公钥和私钥?华为云:什么是公钥和私钥?维基百科:公开密钥加密

三、🔐如何生成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.100scp 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用户直接登录,改用普通用户切换权限

木筏求生铰链如何获得 Raft铰链获得方法介绍
Live有两个读音,什么时候读laiv,什么时候读liv?