刚入门 Linux 的时候我清楚的记得我装的是 Fedora 9 操作系统,也不知道后来到底什么时候彻底转向了 Ubuntu ,也许是 Ubuntu 更适合桌面环境吧,反正就是偏爱 Deb 系多一点。VPS 上也更喜欢用 Ubuntu Server ,因为社区支持很友好,因为我什么都要去搜索才会弄。
每次购买一台新的 VPS 之后总有一些重复动作,挺麻烦的,与其每次去 Google 搜索一些必要的初始化设置教程,还不如自己整理一篇,以后只看我自己的这篇『Ubuntu Server 初始化配置』就可以了,省时省力。
更新 Ubuntu 系统
当你买一台 VPS ,装好 Ubuntu 服务器版操作系统之后,首先执行下列命令把系统更新到最新状态,包括厂商预装的一些组件和内核等。
sudo apt update
sudo apt list --upgradable
sudo apt upgrade
升级完成之后是时候清理一下了:
sudo apt autoremove
sudo apt clean
添加新用户,并且添加 root 权限
当一台 VPS 的系统安装完成之后,通常给你一个 root 账户。其实这是废话,要不然不可能有权限升级系统了。大多数云主机在安装 Ubuntu 系统后,默认都是用 root 账户登录的。用 root 账户非常危险,还是养成好习惯,用普通用户登录,然后执行 sudo 比较安全点。
先用这个命令新建一个叫 ubuntu 的普通用户:
sudo adduser ubuntu
创建完这个用户后,如果想用它来执行一些系统级命令,可以把它加进 sudo 群组,这样就可以用 sudo 命令了:
sudo usermod -a -G sudo ubuntu
默认情况下,sudo 用户每次都是要输入密码的,如果你觉得麻烦,可以考虑关掉它。执行下面这条命令进行 sudo 配置文件编辑模式:
sudo visudo
把配置文件中的:
%sudo ALL=(ALL:ALL) ALL
改成:
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
这样,sudo 执行命令就再也不用输入密码了。
配置 SSH 登录及 SSH Server 安全设定
从自己的电脑上使用 ssh 登录这个远程 Ubuntu Server 的时候每次都需要输入密码,我们可以给这台 Ubuntu Server 上的 ubuntu 用户设置 SSH Key 来登录,这样就不用输入密码了。如果你本地的 Ubuntu Desktop 或者 macOS 或者其它 Linux 桌面还没有 SSH 密钥 ,先使用下列命令生成:
ssh-keygen -t RSA -b 2048
生成的密钥存放在 ~/.ssh 目录下,如果配置 SSH Key 登录,只需将本地的 ~/.ssh/id_rsa.pub 文件中的内容拷贝到远程 Ubuntu Server 的 ~/.ssh/authorized_keys 文件中即可。
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
你也可以直接使用 ssh-copy-id 这个命令自动完成上面的这几个步骤。
ssh-copy-id ubuntu@ubuntu_server_ip
之后你就可以使用 ssh ubuntu@ubuntu_server_ip 这个命令来登录 Ubuntu 服务器了。
有些云主机后台可以自己添加你的 ssh 密钥并且关联到你的某台 vps 上,其实就是你本地电脑上的 ~/.ssh/id_rsa.pub 文件中的内容,你可以执行下面的命令查看它,然后复制粘贴到主机管理后台,系统会自动把这个 ssh 公钥添加到与之关联的 Ubuntu 服务器的默认用户的 .ssh/authorized_keys 文件中从而省去上述一些步骤。
cat ~/.ssh/id_rsa.pub
因为 ubuntu 这个普通用户已经有了 sudo 命令权限,保留 root 这个用户的 ssh 登录权限不安全,可以考虑禁止 root 用户使用 ssh 登录 Ubuntu 服务器。编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
把 PermitRootLogin 设置成 no,用于禁止 root 登录:
PermitRootLogin no
把 PasswordAuthentication 设置成 no,禁止使用密码登录,因为我们已经配置了 SSH Key 来登录,更安全:
PasswordAuthentication no
改 Port 为其他数字,因为大家都直到 ssh 默认的端口号是 22 ,所以改成其他数字更安全,但是记得防火墙规则也要更新。
Port 2345
重启 SSH Server 让上面的设置生效:
sudo systemctl restart sshd.service
设置 ssh 超时自动断开连接:
echo 'TMOUT=300' >> .bashrc
这个命令的意思是在 ssh 连接 5 分钟没有活动之后自动断开连接。
其它相关的东西,你可以查看 Tualatrix 大神的文章。