我的 Linux 开发日志:从 WSL 到云端(第 1–5 天)
Source: Dev.to
TL;DR
我正在参加 Linux Upskill Challenge,希望从仅仅“使用”Linux转向真正的管理。 我想自己掌控全栈和 AI 项目的远程服务器,而不是依赖神奇的解决方案。
Setup: 本地使用 WSL,连接到 Google Cloud Platform(GCP)虚拟机。
以下是我第一周学到的所有内容。
Source: …
第 1 天 – “前门”
问题
公共互联网本质上不安全。数据以明文方式传输,导致同一网络中的黑客可以嗅探密码和其他敏感信息。
解决方案 – SSH
安全外壳(SSH)在本地机器和远程服务器之间创建加密隧道。即使有人拦截流量,也只会看到乱码。
基于密钥的认证 vs. 密码
- 密码 – 易受暴力破解攻击。
- 密钥对(非对称加密) – 安全性高得多。
| 组件 | 作用 |
|---|---|
| 公钥 | 存放在服务器上(“锁”) |
| 私钥 | 存放在本地机器上(“实体钥”) |
服务器会发送一个挑战,只有私钥能够解答。没有私钥 → 无法进入。
# 通过 WSL 连接,使用 -i 参数指向我的私钥
ssh -i ~/.ssh/id_ed25519 gcp-tyronemt@34.9.x.x
“前 5 分钟”健康检查
| 命令 | 显示内容 |
|---|---|
uptime | 系统已运行时间 + 负载平均值 |
free -m | 可用内存(为 0 时应用会崩溃) |
df -h | 磁盘使用情况(确保日志未占满磁盘) |
htop / top | 实时 CPU 使用情况(Linux 任务管理器) |
uname -a | 内核版本 & 系统架构 |
关键要点(第 1 天) – SSH 对远程连接是必不可少的;密钥对比密码安全得多;登录后应立即运行快速健康检查(free、df 等)。
第2天 – 阅读手册与导航文件系统
高效阅读手册的方法
man <command>– 完整参考(例如man ls)。help <builtin>– 查看内置 shell 命令(cd、export等)。运行type <command>可判断是否为内置。tldr <command>– 简洁、示例丰富的速查表(使用sudo apt install tldr安装)。apropos "<keyword>"– 按描述搜索命令。
导航目录树
| 命令 | 描述 |
|---|---|
pwd | 打印工作目录 – 显示当前所在位置。 |
cd /var/log | 绝对路径(从 / 开始)。 |
cd ~ 或 cd | 返回用户主目录。 |
cd - | 返回上一次所在的目录。 |
ls -ltra | 长格式、按时间排序、倒序、显示隐藏文件。 |
文件操作
mkdir <folder> # 创建文件夹
touch <file> # 创建空文件
rm -r <folder> # 删除文件夹及其内部所有内容
# 更安全的交互式删除:
rm -ri <folder>
关键要点(第2天) – 学会阅读手册可以避免盲目猜测,理解所有路径都从根目录 (/) 分支出来,使导航变得更容易。
第 3 天 – 权限管理
谁拥有权限?
| 角色 | 描述 |
|---|---|
| root | 超级用户,拥有全部权限——一次拼写错误就可能毁掉服务器。绝不要直接以 root 登录。 |
| sudoers | 通过 sudo 获得超级权限的普通用户。 |
| regular users | 仅限于自己的家目录(~)。不能进行全局更改(例如,安装软件包)。 |
什么是 sudo?
- 不是 root 本身——它充当审计层,以防止错误。
- 示例:
cat /etc/shadow→ Permission denied;sudo cat /etc/shadow正常工作。
常用 sudo 命令
# 临时成为 root(完整的 root shell)
sudo -i
# 查看谁登录过
last
# 查看失败的登录尝试(例如,机器人)
sudo lastb
全局管理任务
- 主机名
hostnamectl # 显示当前主机名 sudo hostnamectl set-hostname <new-name> # 在云服务商上,确保持久化: # 编辑 /etc/cloud/cloud.cfg → preserve_hostname: true - 时区
timedatectl # 显示当前时区 sudo timedatectl set-timezone <Region/City> # 正确的时区 = 日志中正确的时间戳。
关键要点(第 3 天) – sudo 是安全网。绝不要直接以 root 登录,并且始终设置正确的时区,以便在调试时日志有意义。
第 4 天 – 包管理与文件系统层次
APT (Advanced Package Tool)
- Sources list –
/etc/apt/sources.list.d/ubuntu.sources - Search –
apt search "<keyword>" - Install –
sudo apt install <package>(需要sudo,因为安装会影响整个系统)。
文件系统层次(参见 man hier)
/
├─ /root – root user’s home folder
├─ /home – standard users’ home folders
├─ /sbin – system binaries (admin commands, root‑only)
├─ /etc – global configuration files
└─ /var
└─ /log – system & security logs
关键配置与日志文件(全部为纯文本!)
| Path | Purpose |
|---|---|
/etc/passwd | 用户账户信息 |
/etc/ssh/sshd_config | SSH 守护进程配置 |
/var/log/auth.log | 记录所有 sudo 使用情况和登录日志 |
我还安装了 Midnight Commander(sudo apt install mc),这是一款可视化、基于文本的文件管理器。使用 mc 启动;F3 查看文件,F10 退出。
关键收获(第 4 天) – Linux 本质上是一堆文本文件。要更改设置,编辑 /etc 下的文件;要排查问题,检查 /var/log 下的日志。
第5天 – (敬请期待)
敬请期待下一篇,我将深入探讨网络、 防火墙以及使用 Ansible 自动化部署。
在终端直接管理文本文件是必备技能
查看与编辑
lessvsmore– 使用less阅读大文件。它可以上下滚动并搜索文本,而more功能更受限。- Dotfiles – 以点开头的隐藏文件(例如
.bashrc)。它们保存用户配置。使用ls -a查看它们。 nano– 一个简单的内置终端文本编辑器。
在 CLI 中更快工作
- Tab 自动补全 – 按 Tab 自动补全文件或文件夹名。如果有多个匹配,按两次。
- 命令历史 (
history) – 显示你输入的所有命令。 - 按编号执行 – 输入
即可立即重新运行历史中的该命令。 - 反向搜索 (
Ctrl+R) – 开始输入过去的命令,Shell 会自动建议剩余部分。极大节省时间。
高级工作区
- Bash shell – 许多系统的默认交互式 Shell。
- 自定义提示符 – 编辑
PS1变量来改变提示符的显示方式。 - 替代 Shell –
zsh或fish提供更好的自动建议和更丰富的补全。 - 复用器 (
tmux/screen) – 将一个终端窗口拆分为多个面板,并在 SSH 连接断开后仍保持脚本运行。
关键要点(第 5 天)
停止手动输入所有内容。掌握 Tab 自动补全,使用Ctrl+R查找旧命令,并始终使用less阅读日志文件。