最新版Curosr/VScode已经不再支持SSH远程老旧的Centos系统了会不断报错,但是你看到了我就偷着乐吧,现在立马教你解决。
我最近在为客户搭建游戏的时候都是用的Centos7系统,说真的我也不想用这种远古系统,但奈何那些游戏基本都是在Centos7上编译出来的,想支持其它系统不是一般的难,就在我通过VScode编辑器SSH远程该服务器想用代码编辑器来修改代码发现SSH一直报错连接,最后根据报错信息才知道是Centos系统的一个软件已经太老了,并且升级也不好升级,所以想出来了个用Docker创建一个容器,并将你想修改代码的路径直接映射到容器中,然后通过代码编辑器SSH远程到该容器中即可
解决步骤:部署Docker
* 步骤 1:安装 Docker 引擎
* 卸载可能存在的旧版本(如果提示未找到,属于正常现象,请继续):
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
* 安装必要的工具,并添加阿里云的 Docker 软件源以加速安装:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
* 安装 Docker 社区版:
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
* 启动 Docker 并设置为开机自启:
sudo systemctl start docker
sudo systemctl enable docker
* 步骤 2:配置 Docker 镜像加速器
* 为 Docker 创建配置文件,并写入国内镜像加速器地址(以 DaoCloud 为例),解决从 Docker Hub 拉取镜像缓慢或失败的问题:
echo '{ "registry-mirrors": ["https://docker.m.daocloud.io"] }' | sudo tee /etc/docker/daemon.json
* 重新加载配置并重启 Docker 服务使之生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
* 步骤 3:验证 Docker 安装
* 运行经典的 hello-world 镜像。如果能看到 "Hello from Docker!" 的欢迎信息,则证明 Docker 环境已准备就绪。
sudo docker run hello-world
创建含新版Ubuntu与SSH的镜像
* 步骤 1:创建 Dockerfile
* 在服务器上为我们的开发环境创建一个工作目录:
mkdir -p /root/cursor-dev-env
cd /root/cursor-dev-env
* 使用 echo 命令精准地创建 Dockerfile。**请务必在下面的 `echo` 命令中,将 `developer:新密码` 里的 “新密码” 修改为您自己的强密码**。
cat > Dockerfile <<'DOCKERFILE'
# 使用官方 Ubuntu 24.04 镜像,并切换为腾讯云软件源
FROM ubuntu:24.04
ARG DEBIAN_FRONTEND=noninteractive
# 声明构建参数,用于接收宿主机的用户ID和用户组ID
ARG USER_UID=1000
ARG USER_GID=1000
# 切换为腾讯云软件源并安装常用工具与 SSH
RUN sed -i "s|archive.ubuntu.com|mirrors.tencentyun.com|g" /etc/apt/sources.list && \
sed -i "s|security.ubuntu.com|mirrors.tencentyun.com|g" /etc/apt/sources.list && \
apt-get update && \
apt-get install -y openssh-server sudo git wget curl vim && \
rm -rf /var/lib/apt/lists/*
# 创建与宿主机用户具有相同 UID/GID 的 developer 用户,并授予 sudo 权限
# 这是解决容器内文件读写权限问题的关键
RUN groupadd -g ${USER_GID} developer && \
useradd --uid ${USER_UID} --gid ${USER_GID} -m -s /bin/bash developer && \
echo "developer:新密码" | chpasswd && \
adduser developer sudo
# 允许密码登录
RUN sed -i 's/^#\?PasswordAuthentication .*/PasswordAuthentication yes/' /etc/ssh/sshd_config
# 准备 sshd 运行目录
RUN mkdir -p /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
DOCKERFILE
* 步骤 2:获取宿主机目录权限信息
* 在构建镜像前,我们需要先获取您项目目录在宿主机上的 UID 和 GID。请将 `/home/Web/` 替换为您实际的项目目录路径。
export HOST_UID=$(ls -ldn /home/Web/ | awk '{print $3}')
export HOST_GID=$(ls -ldn /home/Web/ | awk '{print $4}')
echo "成功获取到宿主机目录所有者 UID: $HOST_UID, GID: $HOST_GID"
* 步骤 3:构建 Docker 镜像
* 在 /root/cursor-dev-env 目录下,执行下面的构建命令,创建一个名为 cursor-dev-image 的镜像。此命令会将在上一步获取到的 UID 和 GID 传递到构建过程中。
sudo docker build \
--build-arg USER_UID=${HOST_UID} \
--build-arg USER_GID=${HOST_GID} \
-t cursor-dev-image .
启动容器并映射端口和目录(这里的目录与以上命令中的“获取宿主机目录权限信息”目录相同)
* 步骤 1:启动容器并映射端口和目录
* 运行容器,将其命名为 cursor-dev-container,将服务器的 2222 端口映射到容器的 22 端口,并将您的项目目录 /www/wwwroot/game/ 映射到容器的 /workspace 目录。
sudo docker run -d \
-p 2222:22 \
--name cursor-dev-container \
-v /www/wwwroot/game/:/workspace \
cursor-dev-image
Curosr/VScode远程SSH目标
* 步骤 1:配置 Cursor 的 SSH
* 在 Cursor 中,通过 Ctrl+Shift+P 打开命令面板,选择 Remote-SSH: Open SSH Configuration File...。
* 在打开的 config 文件末尾,添加以下配置块:
Host Docker-Dev-Env
HostName 192.140.168.65
User developer
Port 2222
* 步骤 2:连接并打开项目文件夹
* 保存 config 文件。在 Cursor 的远程资源管理器中,点击新增的 Docker-Dev-Env 进行连接。
* **或者:直接使用命令连接**
* 如果您不想通过配置文件,也可以在 Cursor 中通过 `Ctrl+Shift+P` -> `Remote-SSH: Connect to Host...`,然后在弹出的输入框中输入以下命令直接连接:
```bash
ssh developer@192.140.168.65 -p 2222
```
* 输入您在 Dockerfile 中设置的密码。
* 连接成功后,通过“文件”->“打开文件夹...”,输入路径 /workspace 并确定。
![图片[1]-解决Cursor/VScode无法SSH远程Centos服务器-日出资源网](https://img.cdn1.vip/i/6899925cd0782_1754894940.webp)
© 版权声明
文章版权归作者所有,未经允许请勿转载。部分内容可能来自网络,如侵权请联系修改~
THE END
暂无评论内容