个人知识库 / second brain
目标: 理解 Linux 工作原理和文件系统结构,掌握终端基本操作。
>, >>, <)pwd # 当前工作目录
ls # 列出文件
cd # 切换目录
mkdir/rmdir # 创建/删除目录
touch # 创建空文件
cp/mv # 复制/移动
cat/less # 查看文件内容
学习项目,内含 文档 和 代码 两个子目录文档 下用命令行创建 readme.txt(内容:”你好”)readme.txt 移动到新建的 备用资料 目录中tree 或 ls -R 验证目录结构正确目标: 掌握管道、文本搜索/筛选、权限模型和进程管理。
|) 与标准流 (stdin/stdout/stderr)find 命令选项grep # 文本搜索
find # 文件定位
chmod/chown # 修改权限/所有者
ps/top # 查看进程
wc/sort/uniq # 统计/排序/去重
awk # 字段处理
grep + 管道搜索包含 “Error 404” 的文件名列表awk 提取错误记录的时间戳和 IP 地址cat file | grep pattern | sort | uniq -c 每一步的作用find 或通配符,并正确使用权限管理命令目标: 编写可重复的自动化脚本,理解 systemd 服务管理。
#!)$1, $2, $@)#!/bin/bash
# 接受起始/结束年份,创建月份日志文件
START=$1
END=$2
for year in $(seq $START $END); do
for month in $(seq -w 1 12); do
touch "log_${year}_${month}.txt"
done
done
目标: 掌握 sed/awk 高级用法,理解网络协议基础。
s/pattern/replacement/flags)sed 's/foo/bar/g' # 全局替换
awk -F: '{print $1}' # 指定分隔符提取字段
dig/nslookup # DNS 查询
ping # 连通性测试
目标: 跨环境部署和团队协作能力,工业级日志与故障排除。
FROM ubuntu:24.04
COPY backup.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/backup.sh
CMD ["/usr/local/bin/backup.sh"]
crontab 设置每分钟清理临时文件的任务,模拟排查失败原因把 SSH 私钥加载到 SSH Agent,让后续 SSH/Git 操作无需反复输入 passphrase,也无需每次指定私钥文件。
认证流程对比:
无 agent: git → ssh → 读取私钥 → 输入 passphrase → 成功
有 agent: git → ssh → 询问 agent → agent 已有私钥 → 直接成功
场景 1:私钥设置了 passphrase(最常见)
ssh-keygen -t ed25519 # 会提示设置 passphrase
eval "$(ssh-agent -s)" # 启动 agent
ssh-add ~/.ssh/id_ed25519 # 输入一次 passphrase,后续免输
场景 2:多个 SSH 密钥
ssh-add ~/.ssh/id_ed25519_github
ssh-add ~/.ssh/id_ed25519_work
ssh-add -l # 查看已加载的密钥
场景 3:多工具共享认证
Git、VS Code、Emacs (Magit)、scp、rsync、ssh 都使用同一个 ssh-agent。
eval "$(ssh-agent -s)" # 启动 agent
ssh-add ~/.ssh/xxx # 添加密钥
ssh-add -l # 列出已加载
ssh-add -L # 列出公钥
ssh-add -d ~/.ssh/xxx # 删除一个
ssh-add -D # 删除全部
| 文件 | 说明 |
|---|---|
~/.ssh/id_ed25519 |
私钥(默认目录 ~/.ssh/) |
~/.ssh/config |
SSH 配置(IdentityFile 指定私钥) |
ssh-agent 进程 |
后台进程,通过 $SSH_AUTH_SOCK 通信 |
| 方式 | 示例 | 优点 | 缺点 |
|---|---|---|---|
~/.ssh/config 的 IdentityFile |
IdentityFile ~/.ssh/id_ed25519 |
一劳永逸,按 Host 匹配 | 需手动编辑 |
ssh -i 参数 |
ssh -i ~/.ssh/id_ed25519 user@host |
临时指定 | 每次手动输入 |
ssh-add 加到 agent |
ssh-add ~/.ssh/id_ed25519 |
会话内所有操作复用 | agent 重启后失效 |
AddKeysToAgent yes |
加到 ~/.ssh/config |
首次使用自动加入 agent | 需配合 ssh-agent |
| GNOME Keyring | Ubuntu 24.04 默认 | 登录时自动解锁,无感 | 仅 GNOME 桌面 |
IdentityFile是告诉 SSH 该试哪个私钥,ssh-add是把私钥加载到 agent 内存。推荐配置:IdentityFile+AddKeysToAgent yes。
GitHub/GitLab/Bitbucket/Gitee 的 SSH 用户名都固定为 git。认证靠密钥反查身份,User git 只是连接用户名。
Host github.com
User git
IdentityFile ~/.ssh/id_ed25519
AddKeysToAgent yes
# ~/.bashrc 或 ~/.zshrc
if ! pgrep -u "$USER" ssh-agent >/dev/null; then
eval "$(ssh-agent -s)"
fi
ssh-add ~/.ssh/id_ed25519 2>/dev/null
更推荐在 ~/.ssh/config 中使用 AddKeysToAgent yes,首次使用时自动加入。
ssh-keygen -t ed25519 -f ~/.ssh/xxxxxx.pub) 追加到远程机器的 ~/.ssh/authorized_keys