Debian 12 主机初始配置

远程登录主机

配置 SSH

在使用 SSH 远程连接时,如果长时间没有操作,连接可能会自动断开(通常由于网络超时或服务器配置),可在客户端修改用户 SSH 配置(每 60 秒发送一次心跳包,如果 3 次心跳无响应,则断开):

vim ~/.ssh/config

插入配置:

Host *
  ServerAliveInterval 60
  ServerAliveCountMax 3

登录主机

使用 Terminal 远程登录主机:

ssh root@<ip> -p 22

<ip> 为主机 IP 地址。

第一次使用该 IP 地址登录会提示:

......
Are you sure you want to continue connecting (yes/no)?

输入 yes 回车即可。

如果之前在该设备登录过此 IP 的主机,且有重置系统等操作导致主机公钥发生变化,须先在 ~/.ssh/known_hosts 文件中删除此 IP 相关的记录行之后才能正常登录。

系统设置

修改主机名

根据需要修改主机名:

sudo hostnamectl set-hostname <host-name>

<host-name> 为新主机名。

重启主机:

reboot

禁用 IPv6

如果不需要 IPv6,可以禁用:

sudo vim /etc/sysctl.conf

添加以下配置:

# disabe IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

从配置文件加载并立即应用内核参数:

sudo sysctl -p

修改 DNS

Debian 10+ 默认使用 systemd-resolved 来管理网络,需要修改 systemd-resolved 配置文件:

sudo vim /etc/systemd/resolved.conf

取消注释并填写 DNS 配置:

[Resolve]
# 主用 DNS(优先使用)
DNS=223.5.5.5 1.1.1.1
# 备用 DNS(主用不可用时触发)
FallbackDNS=119.29.29.29 8.8.8.8
# 解析所有域名时尝试附加搜索域
Domains=~.
# 启用 DNSSEC(但允许降级)
DNSSEC=allow-downgrade
# 尝试使用 DNS-over-TLS
DNSOverTLS=opportunistic

重启服务:

sudo systemctl restart systemd-resolved

检查当前 DNS 设置:

resolvectl status

尝试手动解析域名:

resolvectl query github.com
nslookup github.com

默认编辑器

Debian 12 系统默认的编辑器一般为 nano,可修改成更好用的 vim

sudo update-alternatives --set editor /usr/bin/vim.basic

测试编辑 visudo 是否直接调用 vim (默认编辑器):

sudo visudo

vim 基本编辑操作(打开文件时默认为普通模式):

  • i :进入插入模式(光标前插入)
  • o :进入插入模式(光标行下插入新行)
  • Esc :退出插入模式,进入到普通模式
  • :wq :保存并退出
  • :q! :不保存退出
  • :q :直接退出(无修改时可用)

vim 光标跳转基本操作(普通模式下):

  • ^ :光标跳到行首
  • $ :光标跳到行尾
  • gg :光标跳到文件第一行
  • G :光标跳到文件最后一行

软件设置

软件更新

更新 APT 软件包索引:

sudo apt update

升级 APT 安装的软件包:

sudo apt upgrade -y

清理无用软件包:

sudo apt autoremove -y

修改 SSH 端口号

打开 SSH 配置文件:

sudo vim /etc/ssh/sshd_config

找到 #Port 22 ,取消注释,修改端口号:

Port <port>

<port> 为新端口号,范围为 1024-65535(注意回避一些常用软件端口号)。

重启 SSH 服务:

sudo systemctl restart sshd

VPS 如果自带了网络防火墙服务,还需要修改对应的防火墙端口配置。

退出当前用户:

exit

使用新端口登录测试:

ssh root@<ip> -p <port>

安装 ufw 防火墙

安装 ufw 防火墙:

sudo apt install -y ufw

如果不需要使用 IPv6,可关闭 ufw 默认的 IPv6 支持,编辑 ufw 默认配置文件:

sudo vim /etc/default/ufw

找到 IPV6 选项,并将其值改为 no 即可:

IPV6=no

开放 SSH 服务端口(默认 22):

sudo ufw allow <port>/tcp

如果没有修改过 SSH 端口号,可以直接使用服务:

sudo ufw allow ssh

启动防火墙:

sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?

确保已经开启了 SSH 端口,输入 y 即可启动。

查看防火墙详细状态:

sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To Action From

22/tcp ALLOW IN Anywhere

创建新用的 sudo 用户

创建新用户

添加一个用户:

sudo adduser <user>

<user> 为新建用户的用户名,输入两次密码,后续信息可以留空。

添加该用户到 sudo 组:

sudo usermod -aG sudo <user>

之后该用户可以使用 sudo 权限执行命令(需要输入该用户自己的密码)。

免密使用 sudo 权限

如果希望用户使用 sudo 命令时不需要输入自己的密码,需要编辑 sudo 权限配置文件:

sudo visudo

找到该用户的配置:

<user>  ALL=(ALL)  ALL

修改成如下配置(如果没有则直接新建一条):

<user>  ALL=(ALL)  NOPASSWD:ALL

保存退出,如需使用 root 权限执行命令,使用 sudo <command> 即可。

禁止 root 用户登录

打开 SSH 配置文件:

sudo vim /etc/ssh/sshd_config

找到 PermitRootLogin yes ,改为:

PermitRootLogin no

重启 SSH 服务:

sudo systemctl restart sshd

退出当前用户:

exit

打开一个新的终端窗口,使用新用户登录主机:

ssh <user>@<ip>

切换和登出用户

如需切换至 root 用户:

su -

输入 root 用户密码。

如需切换至其他用户:

su - <user>

输入用户密码。

如需登出当前用户:

exit

会返回到之前的用户登录状态(之前没有登录用户则关闭 SSH 连接)。