作者:Chancel Yang, 创建:2023-10-19, 字数:2477, 已阅:45, 最后更新:2023-10-20
一直以来,开发环境都是通过Visual Studio Code
(以下简称VSC)远程SSH进行的
这套方案有以下几个好处:
而远程服务器我选择的是本地虚拟机Debian12
,通过Gost
组网实现在任何设备下都可以随时访问
但是这套方案也有不足之处:
host
为0.0.0.0
否则宿主机无法访问Docker可以很好的弥补这些缺点,与宿主机实现统一网络环境与文件系统
Docker设计理念与虚拟机不同,一个容器是生命进程等于一个应用的生命进程,而不是虚拟机这种完全独立的操作系统
所以这一点需要稍微注意,要给容器一个永久可以运行的应用,这里我选择是使用容器来运行SSH服务
Dockerfile文件参考如下
FROM debian:12.1
# 安装SSH服务端和其他依赖项
RUN apt-get update && \
apt-get install -y openssh-server vim wget proxychains gcc make net-tools openssl curl sudo git && \
mkdir -p /run/sshd
# 生成SSH服务器的密钥
RUN ssh-keygen -A
# 设置root用户的密码
RUN echo 'root:root' | chpasswd
# 开放SSH服务端口
EXPOSE 22
# 启动sshd服务
CMD ["/usr/sbin/sshd", "-D"]
构建这个镜像
sudo docker build -t debian12.1:latest . --no-cache
将当前目录下的data
文件夹映射给容器并运行容器
sudo docker run --name debian12.1 --restart=always -d -p 20022:22 -v "$(pwd)/data":/data debian12.1:latest
之后可以将代码项目全部放到data
目录下,也方便编译后随时验证
运行成功后,在宿主机使用ssh容器连接
ssh root@127.0.0.1 -p 20022
给系统升级并安装常用的软件
apt update
apt install -y vim wget proxychains gcc make net-tools openssl screen unzip htop curl sudo git zsh
接下来创建用户,这里创建chancel
用户
adduser chancel
编辑/etc/sudoers
,添加如下一行授权chancel
用户为超级管理员
chancel ALL=(ALL:ALL) ALL
到此,一个初步的远程环境便配置完成了,其他单独的语言开发环境配置与上面类似,这里不展开赘述了
Docker的镜像debian:12.1
不是一个完整的操作系统,会出现很多小问题,以下是一些记录与修复
这是缺失中文编码的问题,输入locale
可以检查
chancel@6a57fa21dec6 locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=
修复需要安装locales
,如下
sudo apt install -y locales
然后使用dpkg-reconfigure locales
来重新设置本地编码,在出现的菜单中记下en_US.UTF-8 UTF-8
的编码
在随后的输入中输入该序号,并设置为默认编码即可