当前位置: 首页 > news >正文

实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控

利用实验室服务器跑实验的时候,通常就是两种方案,一个是向日葵远程桌面进行操作,一个是通过ssh进行连接,用ssh的话,一般服务器都在内网(例如校园网),是无法在公网(不在校园网内)直接通过服务器ip进行ssh连接的,这里就可以使用内网穿透,将服务器的ip暴露在公网上,这样在家也能跑实验啦~

但是!ssh内网穿透上存在被别人恶意攻击的可能性!而且,实验室多人使用同一台服务器,都用ssh去连接,每个人每个项目可能又是不同的环境配置,那这时候怎么办呢,能不能将每个人的环境隔离开来呢🤔

当然是Docker啦~刚好最近在配置实验室的系统隔离,也是记录一下配置的流程。

首先摆出我们的系统配置

Ubuntu24.04

Amd64架构

校园网内网环境

安装docker

更新软件源

sudo apt update

安装基本软件

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y

指定使用阿里云镜像

sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

更新软件源

sudo apt update

安装docker-ce

sudo apt-get install docker-ce -y

查看docker版本

上述步骤已经完成了docker的安装,可以通过如下命令查看docker版本

docker version

配置可用镜像源

创建文件daemon.json

cd /etc/docker
sudo touch daemon.json
sudo vim daemon.json

把下面内容复制进daemon.json中

{"registry-mirrors": ["https://docker.1panel.live","https://hub.rat.dev"]
}

重启docker

systemctl daemon-reload
systemctl restart docker

创建容器

下载镜像

其中cuda版本根据nvidia-smi去https://hub.docker.com/r/nvidia/cuda/tags?page=2&name=11.3 搜索对应版本下载

docker pull nvidia/cuda:11.8.0-devel-ubuntu22.04

docker images 查看

使用docker images可以查看是否pull成功,看到类似图中框起来的就是配置好镜像了,接下来就是把镜像跑起来(你可以简单理解为镜像就是一个系统)

docker容器实例创建

创建一个docker容器,以增加里面的配置,使其后面能够通过ssh连入这个docker容器

docker run -i -t nvidia/cuda:11.8.0-devel-ubuntu22.04<对应上图> /bin/bash

这样之后就会进入 docker 容器的终端,在容器实例里面执行下列指令

apt-get update
apt-get install openssh-server # 安装sshd which sshd

创建权限分离目录

mkdir /var/run/sshd

设置密码,后续远程连接使用

passwd

修改ssh配置文件,设置为允许root远程登录

apt-get install vim #安装vim 
vim /etc/ssh/sshd_config

将PermitRootLogin prohibie-password 修改为:PermitRootLogin yes 即可。若没有则加上PermitRootLogin yes

apt-get install inetutils-ping #安装网络工具,后续ping网络(可不装)

最后退出

exit

将容器打包成镜像

docker ps -a找到刚刚新建但退出的容器

通过container id将容器打包成镜像:

docker commit 109f927221f4 cuda11.8:ubuntu24.04 <对应上图>

启动容器实例服务

启动容器,将宿主机的40902端口映射到docker容器的22端口(22端口就是ssh要连接的端口)

docker run -d -p 40902:22 -v /mnt/docker-user-ssh/pshawn-data:/mnt --privileged=true --name student01 --restart=always --gpus all cuda11.8:ubuntu24.04 /usr/sbin/sshd -D

本地ssh连接

通过ssh ip+port进行连接啦,密码是我们在docker容器实例中设置的,用户默认是root。

ssh root@ip<本地是127.0.0.1> -p 40902<上边设置的端口号>

创建多个容器

为每个用户创建新的容器实例。您可以重复执行类似的命令来启动新的容器,但请注意为每个容器指定不同的名称端口映射,以避免冲突。以下是创建新容器的示例命令:

docker run -d -p 40902:22 -v /mnt/docker-user-ssh/pshawn-data:/mnt --privileged=true --name student01 --restart=always --gpus all cuda11.8:ubuntu24.04 /usr/sbin/sshd -D

进入容器终端

docker exec -it <container_name> /bin/bash

参考博客:

linux服务器通过docker容器实现多用户环境隔离_docker多用户权限隔离-CSDN博客


文章转载自:

http://Z2QncgGu.hrpbq.cn
http://EuNeCP08.hrpbq.cn
http://l6mLbJMc.hrpbq.cn
http://cQpig6IJ.hrpbq.cn
http://rIpc0tI4.hrpbq.cn
http://xUrQ4O3o.hrpbq.cn
http://7T0Ku6Ds.hrpbq.cn
http://mSd6P7Zd.hrpbq.cn
http://kI3Sber0.hrpbq.cn
http://5bgFcO6A.hrpbq.cn
http://PZLcYPQI.hrpbq.cn
http://8JcHcZIV.hrpbq.cn
http://0A3y7jGq.hrpbq.cn
http://HzvINAq0.hrpbq.cn
http://EDZxWbJY.hrpbq.cn
http://qv6tLaYz.hrpbq.cn
http://yzvfQYRp.hrpbq.cn
http://DuyEP0co.hrpbq.cn
http://68PFhQPS.hrpbq.cn
http://JkEiwut8.hrpbq.cn
http://SmeGXzZw.hrpbq.cn
http://yuJT7gqL.hrpbq.cn
http://faescpUT.hrpbq.cn
http://xH2Lzcqw.hrpbq.cn
http://JFdWKkQI.hrpbq.cn
http://EAmTpLpD.hrpbq.cn
http://6EGERzhN.hrpbq.cn
http://RWBFWCS7.hrpbq.cn
http://l6tZT7MP.hrpbq.cn
http://aO1bMIz4.hrpbq.cn
http://www.dtcms.com/a/371444.html

相关文章:

  • QProxyStyle类中drawControl和drawComplexControl函数的区别是什么
  • 【Linux手册】管道通信:从内核底层原理到使用方法
  • LeetCode 几道 Promises 和 Time 的题目
  • 狂想-机器人触感阵列理论验证方案
  • Unity 塔防自用可视化路点寻路编辑器
  • HTML 中的 CSS 使用说明
  • STEM背景下人工智能素养框架的研究
  • 音频驱动数字人人脸模型
  • 深入理解 `std::string_view`:现代 C++ 中的高效字符串处理工具
  • [论文阅读] 人工智能 + 软件工程 | 首个仓库级多任务调试数据集!RepoDebug揭秘LLM真实调试水平
  • 数据结构:单链表以及链表题
  • 谷歌Genie 3:让你的照片变成可以玩的游戏世界
  • 如何终止画图
  • shell脚本练习
  • Coze源码分析-资源库-删除插件-前端源码-总结
  • 【AI论文】门控联想记忆:一种用于高效序列建模的并行O(N)架构
  • 服务器请求伪造ssrf
  • TDengine 选择函数 TOP
  • 计算机的排序方法
  • C#测试调用OpenXml操作word文档的基本用法
  • c#中public类比博图
  • linux C 语言开发 (四) linux系统常用命令
  • Docker启动失败 Failed to start Docker Application Container Engine.
  • scikit-learn/sklearn学习|广义线性回归损失函数的基本表达式
  • 2025年AI PPT必修课-汇报中AI相关内容的“陷阱”与“亮点”
  • RabbitMQ 教程
  • 【RabbitMQ】如何在 Ubuntu 安装 RabbitMQ
  • 硬件-电容学习DAY4——电容选型全攻略:从原理到实战
  • RabbitMQ--延时队列总结
  • 开放式LLM的崛起:未来已至