Learn to Cloud 阶段一:SSH 安全远程接入云端虚拟机——从密钥原理到三大云厂商实操
教程云原生【免费下载链接】learn-to-cloudA courseware built on the belief that anyone can learn foundational cloud engineering skills with the right guide and discipline项目地址https://gitcode.com/gh_mirrors/le/learn-to-cloud点击查看免费下载本篇指南围绕 Learn to Cloud 课程 Phase 1 的第 4 个主题「SSHSecure Shell 与远程访问」展开帮助学习者理解 SSH 是什么、为什么云工程师离不开它并完成「从本地终端 SSH 到云端虚拟机」的首次实操。读完本文你将掌握 SSH 的基本原理、密钥对key pair的生成与管理、在 AWS / Azure / GCP 上连接虚拟机的具体命令以及从密码认证迁移到密钥认证的安全实践。一、这个主题在课程中的位置本主题对应的原始文档是 docs/phase1/4-ssh.md另有西语译本 i18n/es/docusaurus-plugin-content-docs/current/phase1/4-ssh.md课程规划预估用时为1 天。在 docs/phase1/README.md 的课程地图中SSH 是 Phase 1「Linux and Bash」的第 4 个主题紧随 Git/版本控制1-versioncontrol.md、云 CLI2-cli.md与 Infrastructure as Code3-iac.md之后衔接第 5 主题 CLI 基础5-clibasics.md与第 6 主题 CTF 实验室6-ctf.md。它在阶段目标中扮演的角色是「构建并访问实验室环境」Phase 1 的 CTF 挑战要求学习者把实验室环境部署到云上而 SSH 正是进入这台机器的钥匙。文档原生的学习路径很清晰学概念理解什么是 SSH练实操在 AWS、Azure、GCP 三朵云上练习连接 Linux 实例过关清单能回答「SSH 是什么、为什么用它」「如何从终端 SSH 到 VM」「SSH 密钥为什么比密码更好」三个问题。本文即按这条路径展开并在每一节补充可落地的命令与仓库内的佐证资料。二、SSH 是什么为什么云工程师必须掌握SSHSecure Shell是一种加密的远程登录协议默认使用TCP 22 端口允许你在本地终端上安全地登录并操作一台远程计算机通常是 Linux/Unix 服务器或云端虚拟机。相比早期的明文远程协议如telnet、rloginSSH 的核心价值是加密传输用户名、密码、命令与输出全部在网络上加密防止中间人窃听身份认证通过密码或密钥对验证「你是谁」防止冒名登录完整性校验通信内容可校验、防篡改。SSH 并非只用于登录。在云工程日常工作中它几乎是所有远程操作的基础设施场景典型命令/工具登录远程虚拟机ssh userhost传输文件scp、sftp端口转发 / 加密隧道ssh -L、ssh -D、ssh -N安全 Git 传输Git over SSH如git clone githost:repo.git对云工程师而言SSH 是管理 EC2、虚机、容器节点等一切 Linux 计算资源的基本功——本主题也正是后续 Phase 3「安全远程访问」与 Phase 5「网络安全」的起点。三、动手前的环境准备在真正连接云端 VM 之前请先确认本地环境满足以下条件1. 本地已安装 SSH 客户端OpenSSHmacOS 与主流 Linux 发行版默认自带 OpenSSH可用以下命令验证ssh -V # 输出示例OpenSSH_9.x, OpenSSL 3.x.x ...如果你在 Windows 上请按 Phase 1 课程要求先配置WSLWindows Subsystem for Linux在 Ubuntu 环境内使用 SSH——课程文档明确指出所有实验室与工具都期望一个 Linux 环境参见 docs/phase1/README.md 的 Prerequisites 部分。2. 已创建云账号并安装云 CLISSH 连接需要一台已运行的目标虚拟机。若尚未完成请先参考 docs/phase1/2-cli.md 完成 AWS / Azure / GCP 账号创建与 CLI 安装再参考 docs/phase3/1-virtual-machines-compute-services.md 部署一台 Linux 虚拟机推荐 Ubuntu 或 Amazon Linux。3. 放行 22 端口多数云平台的安全组Security Group/ 网络安全组NSG/ VPC 防火墙规则默认允许 22 端口入站但请务必确认否则连接会直接超时。四、核心实操从本地终端 SSH 到云端虚拟机SSH 连接的基本语法是ssh [选项] 用户名主机地址常用选项选项含义-i 私钥路径指定用于认证的私钥文件如-i ~/.ssh/my-key.pem-p 端口指定端口默认 22当服务器改端口时使用-v输出详细调试信息排障利器-l 用户名直接指定登录用户也可用userhost写法首次连接会发生什么第一次连接新主机时SSH 会提示确认对方的 host key 指纹fingerprintThe authenticity of host ec2-3-xxx.compute.amazonaws.com (3.xxx) cant be established. ED25519 key fingerprint is SHA256:xxxxxxxx... Are you sure you want to continue connecting (yes/no/[fingerprint])?输入yes后该主机的指纹会被记录到本地~/.ssh/known_hosts此后连接不再重复询问。确认指纹来自可信来源是防止中间人攻击的关键步骤——云厂商控制台通常能查到实例的指纹可交叉核对。4.1 AWS EC2AWS EC2 在创建实例时即要求绑定密钥对key pair公钥写入实例私钥.pem由你下载保存。默认用户名取决于 AMI# Amazon Linux 2 / 2023 镜像 ssh -i ~/.ssh/my-key.pem ec2-user公有IP或公有DNS # Ubuntu 镜像 ssh -i ~/.ssh/my-key.pem ubuntu公有IP或公有DNS注意私钥文件权限过宽会被 OpenSSH 直接拒绝见下文「权限管理」AWS 官方要求.pem权限至少为chmod 400。4.2 AzureAzure 创建 Linux 虚拟机时可在「身份验证类型」中选择SSH 公钥推荐或密码。创建时指定的用户名通常是azureuser。连接方式ssh azureuser公有IP若创建时上传了公钥本地需有对应私钥Azure 也支持在门户「连接」页直接生成包含-i参数的完整 SSH 命令若选择了密码认证首次连接会提示输入密码。4.3 GCPGCP Compute Engine 提供了最省事的方案——gcloudCLI 可以自动生成临时密钥并完成登录gcloud compute ssh 实例名 --zone可用区 # 示例 gcloud compute ssh my-instance --zoneus-central1-a首次执行时gcloud会生成/上传 SSH 密钥并询问你是否设置本地 passphrase它还会自动把结果写入~/.ssh/。若想手动指定用户可追加--参数或使用标准ssh 用户名外部IP。4.4 退出会话exit # 或 Ctrl D五、SSH 密钥 vs 密码为什么密钥更安全这是原文档清单中的核心问题「我理解 SSH 密钥并且知道为什么它们比密码更好」。答案要从认证机制说起。密码认证的弱点弱口令与复用暴力破解brute force工具可以批量尝试常见密码公网实例在数小时内就会收到大量扫描尝试密码在网络上传输时虽有加密但服务器侧一旦被攻破密码可能被窃取密码无法做到「一次一密」也难以精细吊销。密钥认证的原理SSH 密钥对由非对称加密生成私钥private key留存在本地相当于你的「身份凭证」绝不能泄露公钥public key上传并追加到服务器的~/.ssh/authorized_keys文件相当于「门禁名单」。登录时客户端用私钥对挑战数据签名服务器用authorized_keys中的公钥验签。由于公钥和私钥在数学上配对服务器能确认「持有私钥的人」就是被授权者。密钥长度动辄 256 位ED25519或 4096 位RSA暴力破解在计算上不可行因此远比密码抗攻击。核心安全习惯私钥永不离开本地、永不提交到 Git 仓库、永不上传服务器而公钥可以公开分发。课程在 CTF 挑战中专门强调「保持你的私钥安全、确保正确的文件权限」见 docs/phase1/5-clibasics.md 的 Challenge 8「SSH Secrets」。六、生成与管理密钥对ssh-keygen 实战6.1 生成密钥对现代 OpenSSH 推荐使用ED25519算法ssh-keygen -t ed25519 -C 你的邮箱或注释如需兼容旧系统可用 RSA 4096 位ssh-keygen -t rsa -b 4096 -C 你的邮箱或注释交互过程中可设置passphrase私钥口令即使私钥文件被盗也无法直接使用-C注释建议写邮箱便于在服务器authorized_keys中区分多把钥匙。生成后~/.ssh/目录下会出现两个文件文件角色建议权限id_ed25519私钥本地身份凭证绝不出本地600chmod 600id_ed25519.pub公钥可上传到服务器authorized_keys644known_hosts记录已确认的服务器指纹自动维护authorized_keys服务器侧的公钥名单在远程机上600/644config为不同主机配置别名/密钥/用户可选6006.2 权限管理chmod 600OpenSSH 对密钥文件权限非常严格私钥如果被「其他人可读」会直接报错 WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for id_ed25519 are too open.因此对私钥执行chmod 600 ~/.ssh/id_ed25519 # 私钥仅本人可读写 chmod 700 ~/.ssh # 目录仅本人可访问这正是课程 Challenge 8 中chmod 600命令的用意见 docs/phase1/5-clibasics.md。在 CTF 与真实渗透场景中~/.ssh/目录也常是侦察重点用ls -la ~/.ssh/列出内容、用find ~/.ssh -type f找出所有密钥文件、用cat authorized_keys审查有哪些公钥被授权——这些命令在本主题清单对应的「CLI 基础」主题中都有讲解。6.3 把公钥部署到服务器ssh-copy-id若目标服务器支持密码首次登录一条命令即可把本地公钥追加到远端authorized_keysssh-copy-id 用户名主机地址 # 输入一次密码后公钥即被安装此后可免密登录手动等价操作是cat ~/.ssh/id_ed25519.pub | ssh 用户名主机地址 mkdir -p ~/.ssh chmod 700 ~/.ssh cat ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys6.4 用 ssh-agent 管理密钥可选当本地有多把密钥、或私钥设置了 passphrase 时可将密钥加载进 ssh-agent避免每次连接重复输入eval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519七、常见连接问题排查报错 / 现象原因处理Permission denied (publickey)私钥不对、用户名不对、公钥未部署核对-i路径与默认用户名检查远端authorized_keysUNPROTECTED PRIVATE KEY FILE私钥权限过宽chmod 600 ~/.ssh/id_ed25519Host key verification failed服务器指纹与known_hosts记录不一致可能换过实例确认是合法变更后移除旧记录ssh-keygen -R 主机地址连接超时安全组未放行 22 端口、或实例无公网 IP检查安全组/防火墙入站规则忘记用户名不同镜像默认用户不同Amazon Linux 为ec2-userUbuntu 为ubuntuDebian 为adminAzure 常为azureuser排障时给ssh加-v可叠加到-vvv能输出完整的握手与认证过程是定位问题的第一手段。八、从 SSH 到更安全的远程访问课程中的进阶掌握基础 SSH 后课程在Phase 3 第 4 主题「安全远程访问」中见 docs/phase3/4-secure-remote-access.md提出了一个重要观点在云环境中基于会话的访问管理正在替代「直接暴露 22 端口 SSH」的旧模式。三大云厂商的对应服务云厂商会话式访问服务核心思路AWSSystems Manager Session ManagerSSM无需公网 22 端口、无需 bastion通过 IAM 授权建立会话AzureAzure Bastion托管式跳板机基于 TLS 的 RDP/SSH 会话GCPIAPIdentity-Aware Proxy基于身份与上下文策略的 TCP 转发这类方案的优势包括实例可以不暴露公网 SSH 端口、访问控制收敛到 IAM 策略、会话可审计可录制。课程对应的实操任务要求你配置会话式访问并用 IAM 策略落实**最小权限least privilege**原则——这与 docs/phase5/1-csf-iam-implementation.md 的 IAM 主题一脉相承。而在本阶段你只需要先把「理解 SSH、会用密钥登录 VM」这件事做扎实因为它是后续理解这些托管方案为什么更安全的底层知识。九、主题完成清单Checklist原文档给出的过关标准如下请在继续下一主题前逐条自检我理解 SSH 是什么以及为什么使用它——能用一句话向别人解释 Secure Shell 的加密、认证与端口 22我知道如何从本地终端 SSH 到虚拟机——能在 AWS / Azure / GCP 上完成一次真实登录、执行命令并退出我理解 SSH 密钥并且知道为什么它们比密码更好——能说明公钥/私钥配对原理会使用ssh-keygen生成密钥并正确设置chmod 600权限。若三项都打上了勾说明你已经具备云工程师最基础也最常用的远程访问能力可以继续学习 docs/phase1/5-clibasics.mdLinux CLI 基础并进入 docs/phase1/6-ctf.md 的 CTF 实战在那里你将把这些 SSH 技巧用在真实的攻防挑战中。十、延伸阅读仓库内docs/phase1/4-ssh.md本主题英文原文档课程骨架docs/phase1/5-clibasics.mdChallenge 8「SSH Secrets」中的密钥管理命令与最佳实践docs/phase1/README.mdPhase 1 目标、前置条件与课程地图docs/phase3/1-virtual-machines-compute-services.md虚拟机与计算服务部署docs/phase3/4-secure-remote-access.mdSSM / Bastion / IAP 会话式安全远程访问docs/phase5/1-csf-iam-implementation.mdIAM 与最小权限实现赞分享教程云原生【免费下载链接】learn-to-cloudA courseware built on the belief that anyone can learn foundational cloud engineering skills with the right guide and discipline项目地址https://gitcode.com/gh_mirrors/le/learn-to-cloud点击查看免费下载相关推荐从零掌握 SSH用一条命令安全访问云虚拟机Learn to Cloud 实战指南从零掌握 SSH用一条命令安全访问云虚拟机Learn to Cloud 实战指南 本篇指南对应 Learn to Cloud 课程 Phase 1「Lin教程云原生Learn to Cloud 云 CLI 搭建指南三大云厂商命令行工具安装、配置与实战应用Learn to Cloud 云 CLI 搭建指南三大云厂商命令行工具安装、配置与实战应用 本篇指南基于 Learn to CloudL2C课程 Phas教程云原生Learn to Cloud 第五阶段实战为你的 Journal API 构建企业级云安全体系Learn to Cloud 第五阶段实战为你的 Journal API 构建企业级云安全体系 本文是 Learn to Cloud 课程 Phase 5S教程云原生上一篇终极指南如何在macOS上使用OpenMTP实现高速Android文件传输下一篇D2RML如何一键开启暗黑破坏神2重制版多账号游戏新时代创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

DeepSeek职场赋能实战:四段式提示词模板与工作流嵌入指南

DeepSeek职场赋能实战:四段式提示词模板与工作流嵌入指南

简介:这份PDF资料是清华大学DeepSeek系列讲座第二讲,共35页,面向希望将大模型落地于职场场景的技术人员、产品经理与管理者。内容围绕DeepSeek职场赋能展开,提出Organization、Innovator、Reasoner、Chatbot四层应用框架&#xff…

2026/10/12 2:05:08 阅读更多 →
Tendermint 协议缓冲定义指南:proto 目录架构、更新流程与版本治理

Tendermint 协议缓冲定义指南:proto 目录架构、更新流程与版本治理

区块链共识算法 【免费下载链接】tendermint ⟁ Tendermint Core (BFT Consensus) in Go 项目地址: https://gitcode.com/gh_mirrors/te/tendermint 点击查看 免费下载 导读 本指南以 Tendermint 仓库中 proto/README.md 为主体,系统讲解 proto/ 目录在…

2026/10/12 2:05:08 阅读更多 →
docker-alpine 的 rootfs 构建器(builder)全解析:mkimage-alpine.bash 选项与最小化镜像构建实战

docker-alpine 的 rootfs 构建器(builder)全解析:mkimage-alpine.bash 选项与最小化镜像构建实战

云原生运维 【免费下载链接】docker-alpine Alpine Linux Docker image. Win at minimalism! 项目地址: https://gitcode.com/gh_mirrors/do/docker-alpine 点击查看 免费下载 本篇技术指南围绕 docker-alpine 仓库中的 builder/README.md 展开,深入讲解…

2026/10/12 2:04:08 阅读更多 →

最新新闻

嵌入式Linux安卓驱动开发:供需、实战与面试全攻略

嵌入式Linux安卓驱动开发:供需、实战与面试全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:53:39 阅读更多 →
共享Buffer却带宽没降?DDR流量的五大根因与排查实战

共享Buffer却带宽没降?DDR流量的五大根因与排查实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:53:39 阅读更多 →
OTFS信道估计实战:压缩感知与相位旋转在高速移动通信中的应用

OTFS信道估计实战:压缩感知与相位旋转在高速移动通信中的应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:53:39 阅读更多 →
Qt5.9 C++开发指南章节代码实战:从环境搭建到工程避坑

Qt5.9 C++开发指南章节代码实战:从环境搭建到工程避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:53:39 阅读更多 →
Linux进程虚拟地址空间:从页表映射到段错误排查

Linux进程虚拟地址空间:从页表映射到段错误排查

搞Linux服务端开发的人,迟早会遇到这么一幕:程序跑着跑着突然Segmentation Fault,或者free的时候报double free,又或者top里看到某个进程的VIRT高得离谱,但RES却很低。很多人第一反应是查代码、查日志,但真…

2026/10/12 2:53:39 阅读更多 →
ESP32 上实现 ONVIF 相机:从组件搭建到 NVR 添加实战

ESP32 上实现 ONVIF 相机:从组件搭建到 NVR 添加实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:52:39 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →