Linux 中的常用初始化操作

新开的服务器想要用得好,一些初始化操作就少不了。
对于非 root 账户登录的情况,这些命令可能需要加上 sudo
(这部分命令均以自用为主要目的,仅供参考

调整用户(组)

新设备到位,用户和用户组总是最重要的

新建用户

1
adduser <username>

修改密码

1
passwd [username]

加入用户组

1
usermod <username> -aG <usergroup>

重命名用户

编辑 /etc/passwd /etc/shadow /etc/group 这三个文件并重命名 home 目录。

修改 SSH 设置(安全第一)

安全性参考方案:仅启用密钥登录 + 换到非 22 端口
请先 su 到你需要使用 SSH 的账户下再进行如下操作

SSH 密钥对

生成

1
2
cd ~
ssh-keygen

然后一路回车就好,直到得到类似提示

1
2
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

这时就生成成功了
私钥文件是 /root/.ssh/id_rsa
公钥文件是 /root/.ssh/id_rsa.pub

放置、改权限

1
2
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
cat /root/.ssh/id_rsa

把显示的私钥复制下来并保存

SSH 配置文件

文件位置:/etc/ssh/sshd_config
可以用 vimnano 打开编辑

1
vim /etc/ssh/sshd_config

1
nano /etc/ssh/sshd_config

如果出现找不到命令的话可以看后文的软件包处理部分

需要修改一下参数 (行数仅供参考)
13 行 #Port 22 改为 Port 80
改变 SSH 的端口,80 可以换成你想要的任意端口 (只要不冲突就行)
38 行 #PubkeyAuthentication no 改为 PubkeyAuthentication yes
57 行 #PasswordAuthentication yes 改为 PasswordAuthentication no
开启密钥登录,关闭密码登录
默认不允许 root 登录的系统,可以在配置文件末尾加上这行来解决

1
PermitRootLogin yes

修改主机名

1
hostnamectl set-hostname <NAME>

个人习惯,也不多说,下一个

改变系统语言为中文

(其他发行版请自行尝试是否有效,或寻找适合自己发行版的操作)

Centos7:

1
echo "LANG=zh_CN.UTF8" > /etc/locale.conf

Ubuntu 18.04 LTS:

1
dpkg-reconfigure locales

使用Page Down 切到列表最底下,上下移动并用空格选中 zh_CN.GBK GBKzh_CN.UTF-8 UTF-8 两项,回车。
示意图1

选择 zh_CN.UTF-8 UTF-8 为默认语言,回车。
示意图2
因为我改过了,所以我的界面是中文的

修改语言需要重启后生效!

SELinux 配置

什么是 SELinux?

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
如果可以熟练掌握 SELinux 并正确运用,我觉得整个系统基本上可以到达” 坚不可摧” 的地步了(请永远记住没有绝对的安全)。
引用自:一文彻底明白 linux 中的 selinux 到底是什么 - PHPYuan

然而因为我没能力搞定他,所以我一般会关掉。

查看状态

1
getenforce
显示值 状态
enforcing 强制模式 违反 SELinux 规则的行为将被阻止并记录到日志中
permissive 宽容模式 违反 SELinux 规则的行为只会记录到日志中
disabled 关闭
Command not found 未安装 SELinux

如果想从 disabled 切换到 enforcing 或者 permissive 的话,需要重启系统
enforcing 和 permissive 模式可以通过 setenforce 1|0 命令快速切换。

永久改变状态

编辑 /etc/selinux/config
SELINUX= 这一项改成你想要的状态
该重启就重启

软件源

这一部分真的是因人而异,不要无脑跟着操作
apt 用于 Ubuntu,yumdnf 用于 CentOS,不再额外强调

更换国内软件源

部分服务商镜像提供了自有源,无需手动更换
推荐清华大学 TUNA 镜像源阿里镜像源
官方有操作引导,不多说了

安装常用软件 (源)

Centos 的 EPEL 源以及常用软件

1
2
3
4
yum install -y epel-release
yum install -y screen wget vim htop curl dnf lrzsz zsh git

apt install -y screen wget vim htop curl lrzsz zsh git

再来个 zsh

1
2
3
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

然后修改 ~/.zshrc 文件,将 plugins=(git) 改为 plugins=(git extract zsh-autosuggestions zsh-syntax-highlighting)

主题选择

常用环境使用 powerlevel10k/powerlevel10k 主题

1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

root 环境使用 dpoggi 主题

更新到最新版

1
2
3
4
yum update -y

apt update
apt full-upgrade -y

BBR

谷歌的拥堵解决算法,总归是有用的
在 Linux Kernel >= 4.9 中已经包含,直接启用即可

1
2
3
4
5
6
7
8
9
10
11
12
uname -r
#确定内核版本

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
#开启BBR

sysctl net.ipv4.tcp_congestion_control
lsmod | grep tcp_bbr
#检查开启状态
#有返回BBR就是开启成功

End?