文章目录
一、什么是SSH?
(1)SSH简介
SSH(Secure Shell) 是一种加密的网络通信协议,用于安全地远程访问和管理计算机(如服务器、虚拟机、路由器等)。它通过加密通信防止数据被窃听或篡改,是运维、开发、IT管理的核心工具之一。
一句话理解:SSH 就是用来安全远程控制另一台电脑的工具,就像用命令行控制别人的电脑一样。
(2)SSH核心功能
| 功能 | 说明与示例 |
|---|---|
| 远程登录 | 通过命令行登录云服务器或远程主机 |
| 远程执行命令 | 在远程主机上执行程序、脚本或维护任务 |
| 文件传输(SCP/SFTP) | 上传代码、下载日志、备份文件 |
| 端口转发(隧道) | 安全访问内网数据库、实现远程内网穿透 |
(3)SSH架构组成
- 客户端(你本地的电脑)
- 服务端(远程服务器,必须开启 SSH 服务)
- 认证方式:
用户名+密码(不推荐)公钥+私钥(推荐,安全、自动化)
(4)📥SSH安装
二、📦 什么是公钥和私钥?
(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用户直接登录,改用普通用户切换权限

3388

被折叠的 条评论
为什么被折叠?



