GPU服务器租用安全配置实战:SSH密钥与端口最小化开放

拿到GPU服务器租用实例后,很多开发者会立刻上传代码,却忽略SSH口令、监听端口和服务暴露范围。训练脚本、模型权重与接口一旦直接暴露到公网,风险远高于普通开发机。本文用一套最小配置,完成实例上线前的基础检查。

一、问题背景

GPU算力平台常通过SSH、JupyterLab或WebUI提供入口。弱口令、无关端口或服务监听所有网卡,可能带来扫描与误访问。大模型训练和推理部署运行时间长,安全配置应在上传数据前完成。

安全并不是把所有端口关闭,而是只开放当前任务需要的入口,并限制访问来源。AI算力平台控制台规则与Linux主机配置应同时检查,避免只改其中一层。

二、环境准备

准备本地电脑、云GPU实例及备用会话。修改SSH前不要关闭当前连接,并记录端口规则、登录用户和应用端口。

润云智算提供按需GPU实例、平台镜像及SSH、JupyterLab等开发入口,可从官网查看实时资源。不同镜像的默认用户与访问方式可能不同,应以实例页面说明为准。

三、实操步骤

1. 在本地创建独立密钥

bash 复制代码
ssh-keygen -t ed25519 -a 64 \
  -f ~/.ssh/gpu_project_ed25519 \
  -C "gpu-project"

为密钥设置口令,不要把私钥上传到聊天工具、网盘或代码仓库。.pub公钥可写入授权列表。

2. 安装公钥并测试新连接

bash 复制代码
ssh-copy-id -i ~/.ssh/gpu_project_ed25519.pub user@server_ip
ssh -i ~/.ssh/gpu_project_ed25519 user@server_ip

没有ssh-copy-id时按平台文档添加公钥。确认新窗口能登录后再修改。

3. 收紧SSH配置

先备份配置:

bash 复制代码
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo sshd -t

在配置中确认或设置:

text 复制代码
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
MaxAuthTries 3

先执行sudo sshd -t检查语法,再重载SSH。禁用密码前必须验证密钥登录;托管镜像应优先遵循平台文档。

4. 盘点真实监听端口

bash 复制代码
ss -lntup
sudo lsof -i -P -n | head -n 30

区分127.0.0.10.0.0.0:前者仅本机访问,后者可能对外暴露。TensorBoard、Jupyter和临时API不应默认公开。

5. 用SSH隧道访问本地服务

假设Jupyter只监听实例的127.0.0.1:8888,可在本地执行:

bash 复制代码
ssh -i ~/.ssh/gpu_project_ed25519 \
  -L 8888:127.0.0.1:8888 user@server_ip

随后访问本地http://127.0.0.1:8888,无需把开发端口暴露公网。

6. 最小化平台端口规则

仅保留SSH和业务端口,并限制到可信来源。正式API还应配置鉴权、限流与日志。

最后验证允许与阻断结果并保存清单,再进入模型上传和推理部署。

四、常见问题与解决方案

1. 关闭密码后无法登录

保持原会话不要退出,恢复备份配置并检查公钥权限。~/.ssh通常应仅允许本人访问,authorized_keys也不应对其他用户开放写权限。

2. 服务端口未开放却仍可访问

检查进程监听地址、已有会话、反向代理及平台规则,确认测试的是公网地址而非SSH隧道。

3. Jupyter必须开放公网吗

多数个人开发场景不需要,可通过SSH隧道访问。确需共享时,应启用令牌或登录认证并限制来源。

4. 更换镜像后规则还在吗

平台规则和系统配置的保留方式可能不同。重建实例后应重新执行清单,不要假设旧配置自动继承。

五、总结

实例安全的核心是密钥登录、禁止高风险入口、盘点监听端口与限制来源。通过平台规则和主机配置双重检查,可以减少开发服务误暴露。

FAQ

Q1:SSH端口改成非常用端口就安全吗?

只能减少部分扫描,不能替代密钥、来源限制和登录日志。

Q2:私钥可以多人共用吗?

不建议。每位成员应使用独立密钥,便于撤销与审计。

Q3:训练结束后要做什么?

备份必要产物,删除临时凭据和敏感缓存,再按平台流程关停实例。

Q4:正式API只开放一个端口够吗?

端口最小化只是基础,还要配置鉴权、TLS、限流、日志和异常告警。

相关推荐
ccino .1 小时前
Docker 容器删除卡在 Removal In Progress / Dead 解决
服务器·安全·web安全·网络安全
万物智能信息科技1 小时前
硬件看门狗MAX6369设置—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
人工智能·华为·开源·harmonyos·鸿蒙
三掌柜6661 小时前
22秒攻击窗口下的防御重构:AI Threat Defense 与 Agent 安全护栏实践
人工智能·安全
七牛云行业应用1 小时前
WorkBuddy自定义模型失败怎么办?从接口鉴权到协议兼容的完整排查
人工智能·agent·ai编程
星空inn1 小时前
DeepSeek V4.1 Flash 实测:分数持平 GPT-6 Astra,单任务成本低 15 倍
ai·chatgpt·deepseek
宸津-代码粉碎机1 小时前
Java面试核心:JVM三大GC垃圾回收算法原理与生产场景落地分析
java·大数据·人工智能·python·spring
xixiaoyunya1 小时前
软件开发中的代码备份策略:Git 之外的本地防线
安全·备份·代码
Ivanqhz1 小时前
BPE(Byte Pair Encoding) 算法
java·服务器·网络·深度学习·神经网络
蓝速科技1 小时前
蓝速 K10 三防平板在工业恶劣工况下的选型与应用指南
大数据·运维·数据库·人工智能·科技