解决Cursor/VScode无法SSH远程Centos服务器

最新版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服务器-日出资源网
演示图
注意 1 本网站名称:日出资源网
2 本站永久域名:www.rnmcnm.com
3 如图片或链接或内容失效等问题请联系站长或评论区留言,我每天都在线以效率为主更新~
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称表情代码图片快捷回复

    暂无评论内容