创建亚马逊服务器和云数据中心 SSH 密钥的完整指南
本文将指导您完成创建 SSH 密钥的步骤,以便安全登录云服务器和数据中心。了解如何在 Windows 和 Linux 系统上创建和使用这些密钥。.

创建亚马逊服务器和云数据中心 SSH 密钥的完整指南

本文将教您如何安全、专业地生成 SSH 密钥,以便安全登录亚马逊云服务器和数据中心。您将学习在 Windows 和 Linux 系统上的实用方法,以及服务器安全和管理的最佳实践。.
0 股票
0
0
0
0

我为什么要创建和使用 SSH 密钥?

在云环境和国际数据中心中,安全自动登录服务器是每个 DevOps 操作、Web 托管、渲染、AI 和数据库管理的基础。. SSH密钥 它们是一种标准、安全且可编写脚本的身份验证方法,可以取代弱密码。.

使用公钥/私钥可以降低暴力破解攻击的风险,更容易实现自动化和更细粒度的访问控制。.

先决条件和基本概念

私钥: 您的机密文件不应泄露。.

公钥: 放置在服务器上的文件(authorized_keys)。.

常用算法: ed25519 (受到推崇的), rsa 4096.

路线: ~/.ssh/id_* 在 Linux/WSL 上 C:\Users\ .ssh 在Windows系统上。.

访问权限: chmod 700 ~/.sshchmod 600 私钥。.

在 Linux/macOS/WSL 上创建 SSH 密钥

建议 ed25519 除非出于兼容性原因需要使用 RSA,否则请勿使用。.

在 Shell 中生成和管理密钥的步骤

ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519 -o -a 100
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/id_rsa -o -a 100
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ls -la ~/.ssh
cat ~/.ssh/id_ed25519.pub
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 [email protected]
chmod 400 my-aws-key.pem
ssh -i my-aws-key.pem [email protected]

注意:在 AWS 中,您通常在启动实例时选择或导入密钥。如果您有 PEM 文件,请使用该文件作为身份标识。.

在 Windows 系统中创建 SSH 密钥(PowerShell / Windows OpenSSH)

Windows 10/11 有 OpenSSH 客户端;您也可以使用 PuTTY/Puttygen 通过 PuTTY 连接。.

PowerShell 命令

ssh-keygen -t ed25519 -C "[email protected]" -f $env:USERPROFILE\.ssh\id_ed25519
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

文件路径:

  • C:\Users\ .ssh id_ed25519

  • C:\Users\ .ssh id_ed25519.pub

使用 PuTTYgen 将 PEM 转换为 PPK

一般步骤:

  • 打开 PuTTYgen。.

  • 文件 > 加载私钥和文件 my-aws-key.pem 加载(显示所有文件)。.

  • 保存私钥 my-aws-key.ppk 然后使用 PuTTY(连接 > SSH > 身份验证 > 私钥文件)。.

在 AWS EC2 和其他云面板中导入公钥

AWS 控制台: EC2 > 密钥对 > 导入密钥对. 文件名和内容 .pub 进入。.

创建实例时,您可以选择现有的密钥对。其他数据中心通常会在控制面板中提供上传/导入 SSH 密钥的选项。.

cloud-init 添加公钥示例

#cloud-config
ssh_authorized_keys:
  - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... [email protected]

将密钥添加到 GitLab/GitHub 并在 CI 中使用

对于 GitLab: 用户设置 > SSH 密钥 然后粘贴公钥。转到项目以部署密钥。.

在 CI/CD 中,将私钥作为受保护的变量上传,并通过创建一个具有受限访问权限的文件在作业中使用它(chmod 600).

密钥安装后的服务器和安全设置

步骤 1:设置权限。.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519

然后是设置 /etc/ssh/sshd_config 检查并更新:

  • 密码验证否

  • 不允许RootLogin

  • 公钥认证:是

  • 你可以 允许用户 设置为限制用户。.

  • 使用DNS 如果需要,可以更改端口。.

sudo systemctl restart sshd

防火墙:

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw allow 2222/tcp

使用 Fail2ban 或 CrowdSec 来防止暴力破解:

sudo apt install fail2ban

对于敏感服务器,请使用堡垒机/跳转机来限制对私有网络的直接访问。.

不同应用场景的实用技巧

交易者专用(用于交易的VPS)

选择地点: 靠近经纪商或交易所服务器,实现最低延迟。我们在全球拥有超过 85 个办事处,总能找到一个靠近您目标市场的地点。.

建议将 SSH 连接限制为仅使用静态 IP 地址或通过 VPN 连接:

sudo ufw allow from 203.0.113.5 to any port 22

适用于游戏玩家(游戏VPS)

对于游戏服务器,应选择具有强大对等连接和完善的 CDN/BGP 服务的服务器位置。使用 SSH 密钥代替密码,并部署堡垒主机以减少攻击面。.

用于人工智能和渲染(GPU 云)

使用强密钥(ed25519/RSA4096)连接到 GPU 服务器,并为每个项目分配单独的用户和密钥。.

rsync -avz -e "ssh -i ~/.ssh/id_ed25519 -p 2222" /local/path user@remote:/remote/path

用于托管和 GitLab 托管

使用具有有限访问权限的服务器特定密钥(部署密钥)自动访问服务器的私有存储库。.

关键管理、轮换和标准

  • 定期轮换钥匙(例如每 6 至 12 个月一次)。.

  • 从钥匙中取出旧钥匙 授权密钥 删除云面板。.

  • 使用私钥的口令并将其存储在密码管理器中。.

  • 在组织中,使用 SSH 证书和 CA 进行集中管理(OpenSSH CA)。.

其他提示和故障排除

遇到错误时 权限被拒绝(公钥) 检查公钥是否在文件中 ~/.ssh/authorized_keys 它存在,权限也正确。.

sudo journalctl -u sshd -e
sudo tail -f /var/log/auth.log

如果您使用 ProxyJump 或跳转主机,则配置文件非常有用:

Host bastion
  HostName bastion.example.com
  User ubuntu
  IdentityFile ~/.ssh/id_ed25519

Host internal-*
  ProxyJump bastion
  User deploy
  IdentityFile ~/.ssh/id_deploy

服务器存活间隔服务器存活计数最大值 在 SSH 配置中使用,可防止会话突然终止。.

最终安全建议

限制对特定 IP 地址的 SSH 访问、使用 VPN 或专用网络以及对敏感服务器使用反 DDoS 服务也是其他一些重要方面。.

摘要和建议清单

  • 创建密钥: ed25519 带密码

  • 文件保护: chmod 700 ~/.ssh && chmod 600 private_key

  • 激活 SSH 代理并添加密钥

  • 将公钥上传到 AWS 控制面板或数据中心,或者使用 cloud-init。

  • 禁用密码验证和允许Root登录

  • 防火墙/UFW 和 Fail2ban 或 CrowdSec

  • 使用堡垒机、IP限制和VPN进行敏感访问

  • 常规密钥复制和轮换

您可能也喜欢