CSAPP实验环境搭(macOS)
环境概览:VScode + docker + ubuntu18.04
想要完成CSAPP中的各个实验,首先就需要搭建一个实验环境。这里以Docker搭建ubuntu18.04作为实验环境,并通过VScode完成对ubuntu18.04的远程连接
step1:下载必要软件
- 安装docker
下载地址:https://docs.docker.com/desktop - 安装VSCode
下载地址:https://code.visualstudio.com/download
step2:配置Linux
这里Linux选择ubuntu18.04,具体配置步骤如下:
- 从仓库拉取系统镜像
docker pull ubuntu:18.04
- 创建容器
docker container run -it -p 7777:22 -v /Users/xxxx/Desktop/csapp:/csapp --name=csapp_env ubuntu:18.04 /bin/bash
其中,
-p 7777:22:设置端口映射,将tcp22端口转发到7777(后续将通过该端口对容器进行访问),与已占用端口不冲突的情况下可以自由设置
-v /Users/xxxx/Desktop/csapp:/csapp:将服务器目录与容器目录进行共享,方便本地与服务器(创建的Linux系统)之间的文件共享
ubuntu:18.04:拉取的镜像名称。
- 更新apt软件源
apt-get update
- 安装sudo
apt-get install sudo
- 安装c/c++编译环境
sudo apt-get install build-essential
- 补充gcc的完整环境(gcc-multilib)
sudo apt-get install gcc-multilib
- 安装gdb
sudo apt-get install gdb
step3:安装并配置SSH服务
- 安装openssh与vim
sudo apt-get install -y openssh-server
sudo apt-get install vim
- ssh配置
vim /etc/ssh/sshd_config
修改SSH配置文件,去掉以下选项的#注释
Port 22 #开启22端口
PermitRootLogin yes #允许root用户使用ssh登录
RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 #公钥文件路径
- 重启ssh服务
service ssh restart
step4:SSH服务自启动配置
尽管容器内安装了ssh服务,但每次关闭容器重启后,ssh将恢复停止状态,每次进入容器时需要重新启动ssh服务:service ssh restart,否则远程连接将失败,因此我们在这里利用脚本来实现ssh服务的自动启动:
vim /root/startup_run.sh
写入
#!/bin/bash
LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$LOGTIME] startup run..." >>/root/startup_run.log
service ssh start >>/root/startup_run.log
#service mysql start >>/root/startup_run.log
添加文件权限:
chmod +x /root/startup_run.sh
打开启动文件:
vim /root/.bashrc
把脚本命令添加到文件末尾:
# startup run
if [ -f /root/startup_run.sh ]; then
/root/startup_run.sh
fi
最后,生效.bashrc:
source ~/.bashrc
至此ssh的自动启动就实现了。
step4:VSCode连接Linux
- 安装插件remote ssh
- 打开查找栏(ctr+shift+p),输入remote-ssh,选择open Configuration file
- 填写配置文件
- 打开远程资源管理器,选择刚才配置好的host进行SSH连接
- 输入root账户密码
- 找到csapp文件夹,进行实验
至此实验所需环境搭建完毕。