服务器管理和使用指南 - HIT-K1928-LAB/HIT-K1928-wiki GitHub Wiki
2026-08-30
- K1938无线网络覆盖差,信号弱,网速慢
- 无人机需要连接实验室局域网络测试,延迟大
- 远程控制K1938服务器延迟大
- 每台服务器只有一个账户,管理混乱,所有人的数据代码文件都放在一起
- 每台服务器同时间只允许一个人操作桌面环境
- K1928与K1938实现有线桥接,两间屋子信号强覆盖,局域网链路不再因隔着走廊而有明显影响
- 每台服务器给每位同学分配个人账户,实现个人数据间的有效分隔
- 权限管理明确,分配实验室管理员账户拥有最高权限,密码只有少部分人知道
- 限制个人用户权限,包括不允许删除其他用户的数据资料、不允许对服务器造成毁灭性操作
- 由于有线桥接实现了K1928和K1938的高速数据通路,可以实现人在K1928,远程对所有服务器桌面环境、终端的访问
- 每台服务器理论上可以允许所有账户同时操作桌面环境
图为2人同时使用远程桌面连接服务器,分别使用GPU0和GPU1训练
服务器的账户名为各位同学的姓名小写全拼,初始密码也是姓名小写全拼,服务器IP地址列表见此链接 https://github.com/HIT-K1928-LAB/HIT-K1928-LAB-Password
- 连接服务器(需要在K1928/K1928-5G局域网内,网络密码buzhidao)
ssh your_name@server_IP
注:在下面章节vscode中添加好.ssh/config配置后,可以简化连接过程
如:Host k1928-c
HostName 192.168.31.105
User zhangrun
Port 22
IdentityFile ~/.ssh/id_ed25519
可以通过ssh k1928-c直接连接第一次登录会提示修改密码,请第一次输入现有的默认密码,后面两次输入你的新密码
- 配置无密码连接(建议)
ssh-keygen -t ed25519
ssh-copy-id your_name@server_IP
# 这样下一次使用当前设备进行ssh连接将不会询问密码- VScode(win/linux)安装如下插件,推荐一起把第二张图的插件也装了,为了后续的容器化开发准备
- 左侧任务栏找到远程资源管理器,进行连接
其中,点击设置、选择.ssh/config文件,可以进行自定义远程IP等项目的编辑,例如:
# Host k1928-c 表示此SSH命名为k1928-c,仅仅是可区分的名字
# HostName是连接的IP地址
# User是连接的用户名
# Port是SSH端口,局域网内为22,远程穿透情况下不是22
# IdentityFile ~/.ssh/id_ed25519是免密码连接的私钥
Host k1928-c
HostName 192.168.31.105
User zhangrun
Port 22
IdentityFile ~/.ssh/id_ed25519- 连接成功
连接成功如下图所示,可以点击“打开文件夹”,选择自己的项目文件夹。
- vscode还支持连接进docker的容器内进行开发
前提:vscode已经通过远程ssh连接到服务器、或者远程桌面直接打开服务器内的vscode
打开远程资源管理器,切换到“开发容器”
可以看到服务器所有的container(可以理解为虚拟机环境),(后续从镜像创建容器时,容器命名希望大家在前面能够加上自己的名字以示区分)
可以点击在当前窗口中附加,即可连接到服务器的容器内环境
成功连接到容器中:
注:容器同时只能支持一个VScode窗口进行连接,不能像正常VScode一样多个窗口开不同的文件夹页面
本机需要能够访问目标服务器,例如在 K1928/K1928-5G 局域网内,或通过学校 VPN / IPv6 能够访问服务器
windows可以使用windows自己的远程桌面连接软件进行连接,ubuntu可以使用remmina连接,计算机栏填写服务器的ipv4或者ipv6地址
使用如下用户名密码进行连接:
用户名:k1928
密码:buzhidao


选择自己的账户进行登录即可
当同一台电脑连接过不止一台服务器的桌面时,由于windows的凭据管理问题,会存在无法连接的问题,在windows的powershell中输入下面命令清除凭据即可
Stop-Process -Name mstsc -Force -ErrorAction SilentlyContinue
Remove-Item `
"$env:USERPROFILE\Documents\Default.rdp" `
-Force -ErrorAction SilentlyContinue
Remove-Item `
"HKCU:\Software\Microsoft\Terminal Server Client\Servers" `
-Recurse -Force -ErrorAction SilentlyContinue先到https://github.com/HIT-K1928-LAB/HIT-K1928-LAB-Password README.md 的 校园网内ipv6连接信息 里复制目标机器的 ipv6 地址。
ssh 用户名@IPv6地址可视化连接见1.1部分,使用ipv6连接
通过学校的vpn服务,可以在任意联网地点进行连接。
在学校的vpn页面下载aTrust VPN客户端,并登录
- 远程桌面连接直接输入https://github.com/HIT-K1928-LAB/HIT-K1928-LAB-Password 记录的ipv6地址即可连接
- ssh服务需要加上-p 2222,即通过2222端口进行连接
如上图所示的,以k1928-c为例,ipv6为2406:280:1003:9617:e8ef:7ac2:ccd9:2f87
在终端命令行连接方法如下:
ssh -p 2222 your_name@[2406:280:1003:9617:e8ef:7ac2:ccd9:2f87]登录vpn后,可视化连接见1.1部分,使用ipv6连接
和在局域网内使用vscode连接方法相似,局域网内vscode连接服务器
修改.ssh/config文件中的HostName和Port即可
Host k1928-c
HostName 2406:280:1003:9617:e8ef:7ac2:ccd9:2f87
User your_name
Port 2222
IdentityFile ~/.ssh/id_ed25519在我的电脑空白处,点击添加一个网络位置
实验室目前有两个存储设备,一个是k1928data01(8TB,使用超98%),k1928data02(8TB,新存储阵列,使用0%)
- 局域网内ipv4
文件夹位置输入
\192.168.31.10\k1928data01 挂载k1928data01
\192.168.31.10\k1928data02 挂载k1928data02
- 局域网内(VPN)ipv6
文件夹位置输入
**\2406-280-1003-d9b3--10.ipv6-literal.net\k1928data01 **挂载k1928data01
\2406-280-1003-d9b3--10.ipv6-literal.net\k1928data02 挂载k1928data02
注意ipv6地址可变,关注ipv6获取最新ipv6
用户名写guest,密码空置,即可连接,方便内部文件存储、文件传输
注:如果提示无法连接,一定是自身电脑配置问题,请使用chatgpt解决
实验室所有服务器均已经默认挂载网盘k1928data01和k1928data02,服务器无需重复挂载
位置在/mnt/k1928data01、/mnt/k1928data02
如果是自己的ubuntu设备需要进行挂载,可以使用如下命令
sudo mkdir /mnt/k1928data01
sudo mount -t cifs //192.168.31.10/k1928data01 /mnt/k1928data01 \ -o username=guest,password=,vers=3.0,iocharset=utf8,file_mode=0777,dir_mode=0777,nopermdocker在服务器上的特点是,镜像、容器大家都可以看得到
服务器内置了一套基础镜像base_image:ubt20-ros1-cda
该镜像包含ubuntu20.04、cuda11.4、ROS noetic、miniconda 25.11、gcc等编译环境
可以通过此镜像派生出各自的基础容器环境
由于docker大家都可以互相看到,所以大家的container命名时一定要使用自己的名字作为前缀
不推荐不使用此基础镜像,自己构建属于自己的镜像,因为会额外占用大量的服务器空间,大家使用同一个镜像的话,在自己容器上进行的改动只会以增量存储的形式占用,会大大节省存储资源。
- 从镜像创建容器(image->container)
# ${CTN_NAME}需要替换成你想创建的容器的名字,建议前面加上名字以示区分,如:zhangrun_base_ctn
# -v /home/zhangrun/code:/root/code 这个是将宿主机的文件目录挂载到容器中,实现容器中能够访问到外面的代码或者数据文件夹
# ${IMAGE_NAME}为使用的镜像名字:Tag,如:ubuntu/cuda/ros/miniconda/gcc:20.04-11.4-noetic-25.11.1-8
docker run --entrypoint bash -it \
--user root \
--runtime=nvidia --gpus all \
--shm-size=16g \
-e "ACCEPT_EULA=Y" --privileged \
--network=host \
--ipc host \
--name ${CTN_NAME} \
-e "PRIVACY_CONSENT=Y" \
-e DISPLAY=$DISPLAY \
-e NVIDIA_VISIBLE_DEVICES=all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility,graphics,display \
-e QT_X11_NO_MITSHM=1 \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v /home/${USER}:/root/host_home \
-v /home/${USER}/code:/root/code \
-v /mnt/k1928data01:/mnt/k1928data01 \
-v /mnt/k1928data02:/mnt/k1928data02 \
${IMAGE_NAME}
# WSL 如果是使用wsl2中的docker Desktop使用下面命令创建容器
docker run --entrypoint bash -it \
--gpus all \
--shm-size=16g \
-e "ACCEPT_EULA=Y" --privileged \
--network=host \
--device=/dev/dxg \
--name yopo \
-e "PRIVACY_CONSENT=Y" \
-e DISPLAY=$DISPLAY \
-e QT_X11_NO_MITSHM=1 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
-e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \
-e PULSE_SERVER=$PULSE_SERVER \
-e LD_LIBRARY_PATH=/usr/lib/wsl/lib:/opt/ros/noetic/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /mnt/wslg:/mnt/wslg \
-v /usr/lib/wsl:/usr/lib/wsl \
-v /home/zhangrun/code:/root/code \
yopo:latest- 启动容器
# ${CONTAINER_NAME} 是你的容器的名字
docker start ${CONTAINER_NAME}- 命令行进入容器
# ${CONTAINER_NAME} 是你的容器的名字
docker exec -it ${CONTAINER_NAME} bash- 将docker内的窗口(如rviz、python的图片显示)转发到宿主机进行查看
# 宿主机上运行
echo $DISPLAY
#输出例如:14.0
# 容器中添加环境变量,可以使用临时方式(仅在此终端生效,重启后、退出终端、在其他终端失效),或者永久写入环境变量的方式
export DISPLAY=:14.0 (临时)
echo "export DISPLAY=:14.0" >> ~/.bashrc(永久)
# 宿主机运行
xhost +
# 容器中的窗口即可被转发出来
# 测试转发
conda activate base
apt install x11-apps -y
xclock这个环境变量的值并不是一成不变的,变化的话可以通过修改~/.bashrc或者重新添加环境变量解决。
下图为在windows上通过vscode连接服务器的容器进行执行代码,将可视化窗口转发到远程桌面连接的虚拟屏幕上的效果
docker常见命令
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu
$(lsb_release -cs)
stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker ps #测试docker命令是否可以使用sudo正常使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.nju.edu.cn",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
#写入以下
[Service]
替换为你的本地代理端口(常见 7890/8888/10809)
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,.docker.internal"
重启
sudo systemctl daemon-reload
sudo systemctl restart docker
# 拉取镜像(默认 latest)
docker pull <镜像名>[:tag]
列出本地镜像
docker images
删除镜像
docker rmi <镜像ID/镜像名>
在当前目录根据 Dockerfile 构建镜像
docker build -t <镜像名>:<tag> .
导出镜像到文件
docker save -o <文件.tar> <镜像名>
从文件导入镜像
docker load -i <文件.tar>
导出容器为镜像
docker commit 容器ID或名字 新镜像名字:版本号
# 查看正在运行的容器
docker ps
查看所有容器(包括已退出的)
docker ps -a
新建并进入容器(交互模式)
docker run -it --name <容器名> <镜像名>
后台运行容器
docker run -d --name <容器名> <镜像名>
进入已运行的容器
docker exec -it <容器名/ID> bash
启动已停止的容器
docker start <容器名/ID>
停止容器
docker stop <容器名/ID>
重启容器
docker restart <容器名/ID>
删除容器
docker rm <容器名/ID>
实时查看容器日志
docker logs -f <容器名>
查看容器内运行的进程
docker top <容器名>
导出容器为镜像
docker commit 容器ID或名字 新镜像名字:版本号
# 列出所有数据卷
docker volume ls
创建数据卷
docker volume create <卷名>
查看卷的详细信息
docker volume inspect <卷名>
删除数据卷
docker volume rm <卷名>
挂载数据卷到容器
docker run -v <卷名>:<容器内路径> <镜像名>
# 查看所有网络
docker network ls
创建网络
docker network create <网络名>
查看网络详情
docker network inspect <网络名>
将容器连接到网络
docker network connect <网络名> <容器名>
将容器移出网络
docker network disconnect <网络名> <容器名>
# 查看 Docker 占用空间
docker system df
清理无用的容器、网络、镜像
docker system prune -f
删除无用镜像
docker image prune -a -f
删除已停止的容器
docker container prune -f
删除无用数据卷
docker volume prune -f
docker run --entrypoint bash -it
--runtime=nvidia --gpus all
--shm-size=16g
-e "ACCEPT_EULA=Y" --privileged
--network=host
--name ${CTN_NAME}
-e "PRIVACY_CONSENT=Y"
-e DISPLAY=$DISPLAY
-e QT_X11_NO_MITSHM=1
-v /tmp/.X11-unix:/tmp/.X11-unix
-v /home/zhangrun/code:/root/code
${IMAGE_NAME}从别的设备转移镜像
- 别的机型的image list
REPOSITORY TAG IMAGE ID CREATED SIZE
fastdronexi35 orin a9e7d1623021 2 months ago 18.2GB
local/fastdronexi35 orin_base_35.3.1 17459a82b3fa 2 months ago 16.9GB
fastdronexi35 orin_base_35.3.1 17459a82b3fa 2 months ago 16.9GB
- 将他们打包成tar文件
sudo docker save -o ./fastdronexi35_orin.tar fastdronexi35:orin
sudo docker save -o ./fastdronexi35_orin_base.tar fastdronexi35:orin_base_35.3.1
- SCP发送到目标机器
scp fastdronexi35_orin.tar [email protected]:/home/user/
- 在目标机器加载镜像
docker load -i fastdronexi35_orin_base.tar
docker load -i fastdronexi35_orin.tar
docker pull osrf/ros:melodic-desktop-full-bionic
在宿主机上运行此命令,可以使docker中的窗口可视化
xhost +local:docker
docker启动时加入参数 -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix
启动容器
docker run -it --name ros-melodic-dev --privileged=true --net=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/zhangrun/code:/root/code osrf/ros:melodic-desktop-full-bionic /bin/bash -c "source /opt/ros/melodic/setup.bash && bash"
所有服务器均已经配置了本地代理服务,可以使用**http://127.0.0.1:7897进行代理配置****,注意端口号为7897**
cat >> ~/.bashrc << 'EOF'
export http_proxy="http://192.168.31.105:7897"
export https_proxy="http://192.168.31.105:7897"
export all_proxy="socks5://192.168.31.105:7897"
export HTTP_PROXY="$http_proxy"
export HTTPS_PROXY="$https_proxy"
export ALL_PROXY="$all_proxy"
EOF
source ~/.bashrc
# APT配置代理
sudo tee /etc/apt/apt.conf.d/95proxies > /dev/null <<'EOF'
Acquire::http::Proxy "http://192.168.31.105:7897/";
Acquire::https::Proxy "http://192.168.31.105:7897/";
EOF
# git 配置代理
git config --global http.proxy 192.168.31.105:7897
git config --global https.proxy 192.168.31.105:7897export http_proxy="http://192.168.31.105:7897"
export https_proxy="http://192.168.31.105:7897"
export all_proxy="socks5://192.168.31.105:7897"
export HTTP_PROXY="$http_proxy"
export HTTPS_PROXY="$https_proxy"
export ALL_PROXY="$all_proxy"# 启动容器
docker start container_name
# 在容器内设置root密码
passwd root
# 安装ssh
apt-get install -y openssh-server xauth
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# 更改默认的ssh端口,下面例子是2220,最好更换一下,不然大家会冲突
sed -i 's/^#\?Port .*/Port 2220/' /etc/ssh/sshd_config
# 如果文件里原来没有 Port 行,就追加一行
grep -q '^Port ' /etc/ssh/sshd_config || echo 'Port 2220' >> /etc/ssh/sshd_config
# 检查配置是否有效
sshd -t
# 重启 sshd
pkill sshd
# 每次重启容器都要重新运行这个命令
/usr/sbin/sshd
# 设置允许ssh连接root账户
sudoedit /etc/ssh/sshd_config
# 修改下面两处
- PermitRootLogin yes
- PasswordAuthentication yes
# 连接
ssh -p 2220 root@宿主机IP
# 或者使用vscode连接
在实体机上使用对应账户的桌面环境后,不要锁屏,而是点击注销当前账号
sudo apt-get install tmux
# 新建一个后台终端进程 xxx是这个进程的名字,建议以具体功能予以区分
tmux new -s xxx
# 在新进入的这个后台终端里进行训练程序的运行
# 然后将这个终端挂在后台detach(按住ctrl+b,再单独按d)
# 重新进入这个后台终端
tmux a -t xxxexport LANG=C.UTF-8
export LC_ALL=C.UTF-8
export LESSCHARSET=utf-8推荐在服务器容器中安装codex cli
# 添加 NodeSource 仓库
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
# 安装 Node.js
sudo apt-get install -y nodejs
# Ubuntu/Debian
sudo apt update && sudo apt install nodejs npm
# CentOS/RHEL/Fedora
sudo dnf install nodejs npm
node --version
npm --version
npm i -g @openai/codex --registry=https://registry.npmmirror.com服务器hostname格式统一为k1928-x,如k1928-c
sudo nano /etc/hostname
sudo nano /etc/hosts
sudo hostnamectl set-hostname 你的新名称
https://github.com/HIT-K1928-LAB/server-management
# 新建用户
sudo adduser username
# 删除用户及home目录
sudo deluser --remove-home username
# 新建用户组
groupadd labusers
# 新建管理员组
groupadd labadmin
# 添加用户到用户组
usermod -aG labusers name
usermod -aG docker name # docker组,所有人都要进
# 添加用户到管理员组
usermod -aG sudo name
# 同一个人不可以同时进入管理员组和用户组
# 从某个组删除用户
gpasswd -d zhangrun labusers
# 配置各个用户组权限
visudo
# 添加以下
# 实验室普通用户最终权限(禁止切root,仅开放必需功能)
%labusers ALL=(ALL) NOPASSWD: /usr/bin/apt, /usr/bin/apt-get, /usr/bin/dpkg, /usr/bin/systemctl, /usr/bin/chmod, /usr/bin/chown, /usr/bin/ping, /usr/bin/ifconfig, /usr/bin/mv, !/bin/bash, !/bin/sh, !/usr/bin/sudo -i
更改root密码
# 给 root 用户设置密码(执行后输入两次密码)
sudo passwd root
# 切换到 root 用户(验证)
su - root
添加用户到docker用户组
usermod -aG docker 用户名
允许root通过ssh登录
sudoedit /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
sudo sshd -t
sudo systemctl restart ssh
sudo systemctl restart sshd
创建账号(可以使用自动化脚本https://github.com/HIT-K1928-LAB/server-management)
sudo useradd -m -s /bin/bash zhangrun
sudo usermod -aG sudo zhangrun
sudo passwd zhangrun
sudo chage -d 0 zhangrun # 强制用户下次登录时立即改密码
服务器配置远程桌面xrdp
sudo apt update
sudo apt install -y xrdp
sudo systemctl enable --now xrdp
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp
sudo ufw allow 3389/tcpsudo mkdir -p /mnt/k1928data01
sudo mkdir -p /mnt/k1928data02
# 测试挂载
sudo mount -t cifs //192.168.31.95/k1928data01 /mnt/k1928data01 \
-o username=guest,password=,vers=3.0,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm
# 正式挂载
sudo nano /etc/fstab
//192.168.31.95/k1928data01 /mnt/k1928data01 cifs username=guest,password=,vers=3.0,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm,_netdev,nofail,x-systemd.automount 0 0
//192.168.31.95/k1928data02 /mnt/k1928data02 cifs username=guest,password=,vers=3.0,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm,_netdev,nofail,x-systemd.automount 0 0
sudo mount -a
sudo mkdir -p /etc/mihomo
sudo mkdir -p /etc/mihomo/ui
sudo mkdir -p /var/log/mihomo
下载"/home/zhangrun/Downloads/mihomo-linux-amd64-v1.19.24.deb"
sudo apt install ./Downloads/mihomo-linux-amd64-v1.19.24.deb
mihomo -v
sudo curl -L "<YOUR_SUB_URL>" -o /etc/mihomo/config.yaml
# 开机自启动
sudo systemctl enable mihomo
sudo systemctl is-enabled mihomo
# 现在已经可以使用代理了
# 接下来配置远程UI
# https://github.com/MetaCubeX/metacubexd/releases 下载压缩包解压到/etc/mihomo/ui
grep -E '^(mixed-port|port|socks-port|allow-lan|bind-address|external-controller|external-ui|secret):' /etc/mihomo/config.yaml
port: 7897
socks-port: 7891
allow-lan: false
external-controller: '0.0.0.0:9090'
secret: ''
# /etc/mihomo/config.yaml添加这个:external-ui: /etc/mihomo/ui
sudo systemctl restart mihomo
可以通过局域网访问IP:9090/ui来进行可视化配置sudo tee /etc/profile.d/proxy.sh >/dev/null <<'EOF'
# Global proxy for all users
export http_proxy="http://127.0.0.1:7897"
export https_proxy="http://127.0.0.1:7897"
export HTTP_PROXY="http://127.0.0.1:7897"
export HTTPS_PROXY="http://127.0.0.1:7897"
# 如果 mihomo 使用 mixed-port,socks5h 一般也可用
export all_proxy="socks5h://127.0.0.1:7897"
export ALL_PROXY="socks5h://127.0.0.1:7897"
export no_proxy="localhost,127.0.0.1,::1,0.0.0.0,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12"
export NO_PROXY="$no_proxy"
EOF
sudo chmod 644 /etc/profile.d/proxy.sh
source /etc/profile.d/proxy.sh
# 测试
echo $http_proxy
curl -I https://www.google.comsudo tee -a /etc/environment >/dev/null <<'EOF'
http_proxy=http://127.0.0.1:7897
https_proxy=http://127.0.0.1:7897
HTTP_PROXY=http://127.0.0.1:7897
HTTPS_PROXY=http://127.0.0.1:7897
all_proxy=socks5h://127.0.0.1:7897
ALL_PROXY=socks5h://127.0.0.1:7897
no_proxy=localhost,127.0.0.1,::1,0.0.0.0,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12
NO_PROXY=localhost,127.0.0.1,::1,0.0.0.0,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12
EOFsudo tee /etc/apt/apt.conf.d/95proxies >/dev/null <<'EOF'
Acquire::http::Proxy "http://127.0.0.1:7897";
Acquire::https::Proxy "http://127.0.0.1:7897";
EOFsudo git config --system http.proxy http://127.0.0.1:7897
sudo git config --system https.proxy http://127.0.0.1:7897sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf >/dev/null <<'EOF'
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7897"
Environment="HTTPS_PROXY=http://127.0.0.1:7897"
Environment="NO_PROXY=localhost,127.0.0.1,::1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker# ssh允许root登录
# ssh允许2222端口
sudoedit /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
Port 22
Port 2222
sudo sshd -t
sudo systemctl restart ssh
sudo systemctl restart sshd



















