简介
先上图:
OS课程组提供了开箱即用的JumpServer供学习使用
,但是依赖于网页端(我不知道,但是 SSH Client
选项在我本地不太工作),难以与本地的开发工具整合。
为了缓解这些问题
在发现Jumserver并不存在什么问题之前,我打包了一个 Docker
镜像,其中包含了OS课程所需(JumpServer也提供)的部分工具,以满足跨平台、本地化和自定义环境的需求。
前置条件
要应用Docker镜像,你当然需要安装Docker。Docker的安装方法请参考官方文档,请选择你的操作系统所对应的版本下载并安装Docker。
使用方法
创建一个空目录,并进入该目录
1
2mkdir OS-Docker
cd OS-Docker创建
docker-compose.yml
文件1
2
3
4
5
6
7
8
9
10version: '0.0'
services:
os:
image: izolito/os-docker:latest
hostname: os
tty: true
volumes:
- ./player:/home/player
ports:
- "4322:22"你可以将以上内容复制到
docker-compose.yml
文件中。第一次运行
1
docker compose up
请耐心等待,直到控制台出现如下信息
1
2
3os-1 | Starting OpenBSD Secure Shell server: sshd.
os-1 | Now you can connect to the container with the following command:
os-1 | ssh -p 4322 player@localhost现在你可以使用
Ctrl+C
来退出容器。以后的运行
1
docker compose up -d
连接到容器
1
ssh -p 4322 player@localhost
输入密码
player
即可登录。停止容器
你可以使用docker compose down
来停止容器。对容器中家目录
/home/player
的修改会被同步到主机的./player
目录中。
注意事项
本镜像并非官方提供,与课程环境可能有些许差异。对于因环境差异引起的实验结果差异,请以课程官方环境的运行结果为准。
如果你使用 Microsoft® Windows™ 系统,请将文件置于NTFS分区下,否则可能出现莫名其妙的权限问题。
不小心干烂了家目录怎么办?你可以在备份重要信息后删除
./player
目录,然后重新运行docker compose up
。记得修改默认的git用户信息。
本镜像的制作参考了CS162 Workspace。
随着课程进度的推进,镜像可能会更新。欢迎在评论中提出镜像的不足之处和想添加的功能。
已安装的工具
镜像采用了 Debian 12 作为基础镜像。
- 开发工具
- build-essential
- cpp
- gcc
- gcc-12-multilib
- g++
- gdb
- gcc-mips-linux-gnu
- gdb-multiarch
- make
- binutils
- autoconf
- clang
- clang-format
- valgrind
- ctags
- python3-pyelftools
- 版本控制
- git
- 文本编辑器
- vim
- nano
- Shell
- zsh
- tmux
- QEMU
- qemu-system-mips
- qemu-utils
- qemu-user
- 其他
故障排除
首次运行时报错
Could not create directory '/home/player/.ssh' (Permission denied).
请删除
./player
目录,手动创建一个空的./player
目录,然后重新运行docker compose up
。更新后ssh产生如下错误
视平台而定,请找到
~/.ssh/known_hosts
或C:\Users\your-username\.ssh\known_hosts
文件,删除其中包含localhost:4322
的行。fatal error: bits/libc-header-start.h: No such file or directory
见“更新日志”中的v0.0.3版本更新。
手动构建镜像
如果你想自己构建镜像,可以按以下步骤操作:
下载
OS-Docker-v0.0.x.tar.gz
到本地,并解压下载链接
https://bhpan.buaa.edu.cn/link/AAB1F52516010E4FD783EDCEC1340480BB(存档)
Folder Name: OS
Expires: 2024/05/03 11:50
Pickup Code: qDxT
1
tar -zxvf OS-Docker-v0.0.x.tar.gz
进入解压后的文件夹
1
cd OS-Docker
(可选)对镜像作你想要的修改
构建镜像
1
docker build -t name-you-like .
运行容器
1
docker run -h os -p 4322:22 -v /path/to/home/player:/home/player name-you-like
你也可以修改
docker-compose.yml
中的image
字段,然后运行docker compose up
。
更新日志
- 2024-04-07: v0.0.4
- 新增了
python3-pyelftools
包,修复了执行测试test3_2
时报错的问题 - 注意:你依旧可以手动运行
sudo apt update && sudo apt install python3-pyelftools
来安装缺少的包。
- 新增了
- 2024-03-14: v0.0.3
- 修复了编译tools/readelf/hello.c时报错的问题
- 更换软件源为清华大学镜像站,这可能会加快镜像的构建速度
- 注意:若你不希望重新下载镜像,可以手动运行
sudo apt update && sudo apt install gcc-12-multilib
来安装缺少的包。
- 2024-03-03: v0.0.2
- 增加了并在vim中配置了
ctags
工具 - 设置了hostname为
os
,现在hostname不会随机生成了 - 注意:若你从v0.0.1升级到此版本,你需要替换
docker-compose.yml
,你可能需要手动为vim配置ctags
工具。
- 增加了并在vim中配置了
- 2024-02-23: v0.0.1
- 初次发布
关于SSH连接Jumpserver
你可以先在这里配置SSH密钥,然后通过以下命令SSH连接到JumpServer.
1 | ssh <你的学号>@git@<跳板机ip>@lab.os.buaa.edu.cn -p 2222 -i <配置好的私钥路径> |
你知道在哪里可以找到<你的学号>。
你可以在登入WebSSH后,在界面的第一行找到<跳板机ip>:
你可以登录这里,然后在
Profile
->SSH Key Setting
中下载私钥或上传公钥。若你选择后者,则你不需要在命令中加入-i <配置好的私钥路径>
。
最后修改于:
最后回复于: