Debian 12
一、前言
最近发现了 Debian Linux 系统,使用的也是 deb 格式的安装包和 apt 管理器。另外由于使用最新版的 Ubuntu 的时候发现默认下载的 Snap 源的软件,导致更新后一些软件会有问题,不能正常使用。虽然可以关闭,但是 emmmm,一言难尽。
趁此机会,把玩一下,嘿嘿~本文基于 Debian12 版本。
二、基础配置
安装 sudo 命令
1 | apt install sudo |
Debian12 默认没有安装该命令。
安装的时候虽然可以选择中国国内的镜像,但是默认的 安全更新 使用的源依旧是官方的地址,而且查阅部分(北京外国语、清华源)镜像的帮助说明,也不推荐使用镜像站安全更新软件源,因为镜像站往往有同步延迟。但是啊,使用官方地址更新时非常的慢!浪子更新的时候两个小时,两个小时啊还没更完!太恐怖了,所以浪子使用了镜像地址。修改 /etc/apt/sources.list
,浪子使用的 北京外国语镜像站:
1 | # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 |
更新并安装一些常用工具
1 | # 更新 |
语言
1 | # 查看当前语言 |
时区/时间
系统安装的时候如果选择的是中国地区,那么就已经配置好了。如果安装时候全是默认的配置,可以使用以下方式修改:
1 | # 查看当前的时区 |
允许 root 用户远程登录
默认情况下,Debian12 也是不允许 root 用户使用密码进行远程登录的 (好吧,其实是 SSH)。所以需要配置一下。编辑 sudo vim /etc/ssh/sshd_config
文件,修改/添加下面的内容,保存退出。
1 | #PermitRootLogin prohibit-password |
然后重启 sshd
服务就可以开心的使用 root 用户密码登录啦!
1 | systemctl restart ssh |
使用 SSH 密钥登录(推荐)
使用密码登录不如配置一个密钥,并且如果是自己玩集群完全可以一个密钥传至所有的服务器上,配置完成后直接使用终端执行 ssh 域名/user@ip
,非常简单,并且安全,也不需要 ssh 工具。
这里就简单介绍一下配置 SSH 密钥登录服务器吧,这种方式并不需要修改上面的文件(生产服务器建议),也是更推荐的安全做法。
-
首先,客户端生成一对 SSH 密钥对;
1
ssh-keygen -t ed25519 -f ~/.ssh/server_key
-
然后上传公钥到服务器,过程中会有一些提示并让你输入服务器的密码,自行填写;
1
ssh-copy-id -i ~/.ssh/pubkey user@ip
-
测试
1
ssh -i ~/.ssh/pubkey user@host
-
编辑
~/.ssh/config
文件:1
2
3
4
5
6
7Host 随便起一个名称
HostName server_ip
User root
port 22
PreferredAuthentications publickey
IdentityFile ~/.ssh/公钥文件路径
IdentitiesOnly yes -
随便打开一个终端,例如 windows11 自带的终端(确保终端的机器装了 ssh 工具哈)
1
ssh 随便起一个名称
现在应该可以直接连接服务器了,并且不需要使用 root 用户的密码进行访问,是不是非常的简单呢!
上传文件也很简单,但是下载就不太好用了。就浪子体验而言,推荐 SSH 连接 + 其它文件传输工具,因为传输文件这个确实不太方便,尤其是跨系统的情况下。
1 | scp file 随便起一个名称:/path/to |
ssh-copy-id 使用 SSH 协议连接到目标主机并上传 SSH 用户密钥。该命令编辑服务器上
authorized_keys
的文件。如果 .ssh 目录不存在,它将自动创建该目录;如果授权密钥文件不存在,它将自动创建该文件。因此推荐使用该命令上传而不是手动在服务端操作。另外,如果添加 -f 选项,可能会导致authorized_keys
文件中存在多个密钥副本。
bash 命令别名
除了部分发行版 Linux 中可以直接使用 ll
命令,其它系统默认是不支持的,所以使用自己喜欢的别名命令还是需要配置的。为了不污染 /etc/profile
中的原有内容,此处举例使用外部文件编写内容,然后引入系统配置中。
在 /etc
目录下创建自己的别名命令文件:sudo touch /etc/alias_bashrc
,Debian12 中默认是没有这个文件名的,可以直接使用,当然,各位少侠可以按照自己喜好自己取文件名,这里只是举例。
1 | alias ll='ls -al' |
编写完毕仍然是不能直接在 bash 中使用命令的,在全局文件 /etc/profile
中引入,让系统加载自定义别名文件内容供系统识别(添加下面使用 # 包括的内容即可):
1 | ... |
然后刷新文件:source /etc/profile
,之后就可以在 bash 中使用 ll
啦,快去试试吧!
vim 配置
vim 配置,默认的感觉不太好用。这段配置并不使用任何插件。
1 | " 文件编码 |
三、其他软件
docker
参考下面两篇文章:
https://docs.docker.com/engine/install/debian/
https://u.sb/debian-install-docker/
如果出现类似下面的报错:
1 | Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on 192.168.47.2:53: server misbehaving |
编辑 vim /etc/resolv.conf
文件在末尾添加以下内容:
1 | nameserver 8.8.4.4 |
podman
Debian12 官方版使用的版本为 4.3.1,如果你想更新到最新版的 Podman,请参考 更新至最新稳定版:
附
关于 PPA
最近了解了 PPA(Personal Package Archives,个人软件包存档),和 Arch/Manjaro 的 AUR 类似,使用过 Linux 的应该都知道,Linux 上的软件包更新是需要经过审核的,而使用 apt 作为下载源的官方包里可能很长时间才更新。这个时候就可以考虑使用 PPA。使用 PPA 的时候需要用户确认信任该源,这要求用户对自己添加的源要负责。
可以使用以下命令添加 PPA:
1 | sudo add-apt-repository ppa:mmk2410/intellij-idea |
部分的 PPA 下载速度也是感人,可以替换源:
1 | 将所有的 http://ppa.launchpad.net 替换为 http://launchpad.proxy.ustclug.org |
- 目前来看,PPA 中的包还较少,很多工具不是版本较旧就是没有,并且 PPA 只推荐喜欢命令行或者了解 Linux 的人使用,小白就不要用了。
- 搜索 PPA 可以在这个网站搜索。
Debian12 系统版本库
Debian12 的官方软件包只支持 openjdk-17,嗯,对的。算了,列个表吧。
emmm,太懒了。后来在 Debian 官方文档 中找到了 Debian 各个版本中对应的软件版本号。文档 还是很不错的,有需要自行查看。
防火墙
Debian12 使用的是 nftables,没错,我之前一直没有听说过,直到现在才知道。吾生也有涯,而学也无涯。
介绍和常用操作,红帽的这篇文章还是非常不错的:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/securing_networks/getting-started-with-nftables_securing-networks
APT 清理系统空间
删除包
1 | apt remove --purge [package] |
–purge 会删除 package 的配置文件。
删除不需要的软件包
1 | apt autoremove |
该选项会删除为满足某个已安装软件包的依赖关系而自动安装的库和软件包。如果该软件包被移除,这些自动安装的软件包在系统中将失去作用。它还会删除在系统升级中自动安装的旧 Linux 内核。
清理 apt 的缓存
APT 软件包管理系统将 DEB 软件包的缓存保存在 /var/cache/apt/archives
中。随着时间的推移,此缓存可能会变得非常大,并容纳许多不需要的包。
可以使用以下命令查看此缓存的大小:
1 | sudo du -sh /var/cache/apt |
有两种方式清理 apt 的缓存,一种是只删除过时的软件包,比如那些被最近更新被取代的软件包:
1 | apt autoclean |
或者完全删除:
1 | apt clean |
清理系统日志
每个 Linux 发行版都有一个日志记录机制,可帮助调查系统中发生的情况:例如日志记录数据、系统日志消息、标准输出和错误。随着时间的推移,这些日志会占用大量的磁盘空间。您可以使用以下命令检查日志大小:
1 | journalctl --disk-usage |
有一些方法可以清理 systemd 日志日志。最简单的方法是清除早于某些日期的日志。
1 | sudo journalctl --vacuum-time=3d |