简介

本文是为提高自己的Linux开发能力而进行的一个尝试,在自己的笔记本上安装基于xfce图形桌面的Debain11后,觉得和之前安装的Ubuntu并无本质区别,为了训练自己熟悉Linux系统、Vim编辑器以及ssh等知识,有必要进行纯命令行安装。

为了方便进行调试,决定现在虚拟机上试安装运行Debian11纯命令行版本,后续在笔记本上安装。

安装过程

镜像选择

Debian – 感谢您下载 Debian!中,由于可能需要无线网卡等固件,因此点击含有固件软件包的非官方非自由映像连接;

因为不需要图形桌面,所以选择版本+nonfree 的路径进入,选择符合机型的amd64,然后选择iso-cd路径,下载ISO镜像文件即可。

镜像选择

VirtualBox配置

选择新建虚拟电脑,这里要勾选Skip Unattended Installation,否则会默认进行域名、主机名、地址等配置,后续安装中可能会出错。

其余部分如内存空间的分配,按默认方案选择,或自行配置即可。

VirtualBox配置

系统安装步骤

GNU安装选择

因为是准备安装纯命令行形式,所以仅选择install即可GNU安装选择

语言选择

虽然有中文的选项,但不要选中文,因为安装完成后,Shell会以中文输出提示信息,但不知是否由于没有中文编码,导致输出的信息全为菱形。所以此处选择English。

其他的地区选择之类的,选择other - China即可;文本编码格式选择en-us

此外,由于缺少中文编码,中文笔记、中文命名的文件夹也全都是菱形,也无法进行中文输入,需要做好纯英文开发、记笔记的准备。

语言选择

基本配置

  • HostName:主机名,可自定义

    HostName

  • root用户密码

  • 用户

    username

    在这里插入图片描述

磁盘分配

对于新手,直接选择全部磁盘空间即可,后续分区也直接选择全部磁盘(第一个选项)即可。

磁盘配置

额外软件选择

因为没有含有其他软件的介质,需要我们通过apt安装,此处选择no即可

额外软件选择

软件源选择

对于国内,选择China - mirrors.ustc.edu.cn,或者其他国内镜像源都可以。

修改软件源

如果发现所选择的源不可用,如被公司内网屏蔽,可以修改软件源,修改过程需要使用root用户,步骤如下:

  1. 切换到root用户

    # 添加 - 是为了在切换用户的同时切换工作目录,否则某些工具,如service可能不可用
    su - root
    
  2. 使用root用户,备份原软件源配置文件

    # {}会自动展开,等同于
    # cp /etc/apt/sources.list /etc/apt/sources.list.backup
    cp /etc/apt/sources.list{,.backup}
    
  3. 使用root权限修改软件源配置文件,添加自己需要的软件源(软件源可以从网上寻找,多为大学或大厂的镜像源)

    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
    deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
    deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
    deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
    deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
    deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
    
  4. 更新

    apt update
    

软件源

代理配置

如果是在公司电脑上使用,可能需要配置公司内网的代理。

此处的代理主要用于apt软件源,如果要修改/删除代理配置,修改/etc/apt/apt.conf即可。

软件选择

因为我们安装的是纯命令行形式,所以只需要安装SSH serverstandard system utilities即可。

软件选择

Grub配置

此处选择yes以及整个磁盘就可以。

关于Grub引导,可以在配置文件中修改,后续可以直接跳过。

Grub配置

SSH配置

SSH是在安装过程中折磨了我最久的问题。

在安装完Debian后,我尝试进行SSH的连接,却总是得到Port 22 Connection Refused的提示。我在网上查找了很久,各种方法都尝试了,却始终不行,我甚至都准备放弃了,但抱着最后再挣扎一下的想法,我突然想到可能是虚拟机的问题,而最后也证明确实是虚拟机的问题,虽然中途还是遇到一些问题,但还好最后还是完成了SSH的成功连接。

SSH配置文件

使用root用户,修改/etc/ssh/sshd_config 文件。

su - root
vim /etc/ssh/sshd_config
  • 使用#注释掉的,删除#打开
  • 图中有而自己的文件中没有的,自行添加

SSH配置文件-1

SSH配置文件-2

虚拟机配置端口转发

  • 在电脑中找到虚拟机的IP地址:192.168.56.1

    主机IP地址

  • 输入ip addr命令,在Debian中查看ip地址:10.0.2.15

    Debain IP地址

  • 配置端口转发

    端口转发配置-1

    端口转发配置-2

    配置参数 说明
    名称 用于对本条端口转发进行说明,自定义
    协议 选择TCP协议
    主机IP 即虚拟机(VirtualBox)的IP
    主机端口 虚拟机未被其他应用占用的端口;
    SSH连接时默认使用22端口,可以使用-p参数指定要使用的端口
    子系统IP Debian的IP
    子系统端口 Debian用于SSH连接的端口,默认为22;
    SSH配置文件中可以修改SSH的端口
  • SSH连接:通过SSH连接虚拟机IP而不是Debain的IP

    ssh root@192.168.56.1
    

SSH传输文件

连接配置

如果不进行连接配置,每次连接时,都需要输入username@ip,冗长且容易出错,毕竟纯数字串的IP地址并不利于人类记忆,为此有有必要进行配置来提高效率。

  1. 编辑本地的~/.ssh/config文件,注意这里编辑的是用于连接远程服务器的主机的ssh配置

    Host RD						# 自定义:用于ssh连接主机的别名
      HostName 192.168.56.1		# 所要连接主机的IP地址
      User root					# 所要登录的用户
      Port 22					# 使用的端口
    
  2. 通过Host进行连接

    ssh RD
    
  3. 在VSCode里搜索SSH插件,安装。按步骤提示进行ssh连接配置,即可通过VSCode连接远程服务器,进行远程代码编辑啦。

文件传输

基于ssh的远程文件传输工具有很多,我所使用的git Bash中默认安装了scp,因此这里就只介绍了通过scp在本地主机与远程服务器间传输文件的方法。

  • scp可以使用ssh的配置
  • 如果需要传输文件夹,需要添加-r参数
本地文件 --> 远程服务器
scp [-r] localfiles username@ip:FilePath

# scp可以使用ssh的配置,如下:
scp a.txt RD:/home/
# 等同于
scp a.txt root@19.168.56.1:/home/
远程服务器 --> 本地文件
scp [-r] username@ip:FilePath localPath

# 示例:保存远程服务器文件到当前目录
scp RD:/home/a.txt .

SSH免密登录

主机生成密钥对

  1. 打开cmd命令行,输入命令ssh-keygen -t rsa,然后全部回车
  2. 打开c:\users\[用户名]\.ssh\id_rsa.pub,然后复制文件内容

在服务器中添加许可

  1. 进入/home/[Server用户名]/.ssh下,如果没有.ssh文件夹,需要自己创建(root用户也在其家目录下创建),确认.ssh目录权限必须是700
  2. 创建authorized_keys文件,确认authorized_keys文件权限必须是600
  3. id_rsa.pub中的内容复制到authorized_keys

修改服务器SSH配置

  1. 使用root权限打开/etc/ssh/sshd_config 文件
  2. 修改StrictModes属性:StrictModes no
  3. 启用AuthorizedKeysFile配置:AuthorizedKeysFile .ssh/auauthorized_keys
  4. 重启ssh服务:service sshd restart
  5. 重新使用ssh登录

修改主机SSH配置

Host RD
  HostName 192.168.56.1
  User root
  Port 22
  PreferredAuthentications publickey
  IdentityFile "C:/Users/Victor/.ssh/id_rsa"

编译环境配置

使用纯命令行Debian的另一个原因是,公司提供的Ubuntu虚拟机,过大,比较臃肿,运行较慢。

使用虚拟机进行编译并不需要图形界面,只需要敲击命令即可,图形界面只会消耗公司电脑本就不多的内存资源,因此我决定使用纯命令行Debian对项目代码进行编译,而在编译之前,还需要安装一下必要的工具才行。

下面是我从公司提供的Ubuntu虚拟机中找到的环境配置文件,粘贴如下,只需要一行行的粘贴运行即可。

apt-get update
apt-get install openssh-server openssh-client -y
apt-get install cmake make rpm2cpio gawk wget git-core diffstat zip unzip texinfo gcc-multilib build-essential chrpath socat cpio -y
apt-get install python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm libarchive-zip-perl -y
apt-get install git gcc python3-git python3-jinja2 libegl1-mesa pylint3 mesa-common-dev automake autoconf lftp subversion p7zip-full -y

后台运行虚拟机

由于我安装的是纯命令行版的虚拟机,对虚拟机的使用大部分时候是通过VSCode使用SSH连接,因此一直显示着的虚拟机运行界面对我来说就有点碍眼。尤其是在通过alt + tab切换软件视图时,切到虚拟机后,由于纯命令行界面,不识别alt + tab这个命令,只能通过鼠标切换,很是麻烦,因此决定将虚拟机置于后台运行。

  1. 进入VirtualBox的安装目录,在该目录下打开命令行窗口

  2. 运行命令:

    .\VBoxManage.exe  startvm  Debian11 --type headless
    
  3. 解释:

    • 其中Debian11是虚拟机的名称
    • Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。
    • Headless模式针对在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)
Logo

一站式 AI 云服务平台

更多推荐