跳转至

常见报错速查与修复

Address already in use(端口被占用)

场景:启动 mkdocs serve 或其他本地服务时报错。

OSError: [Errno 48] Address already in use

原因:上次进程没有正常退出,端口仍被占用。

修复

# 先杀掉占用进程,再重启
pkill -f "mkdocs serve"; blog serve

# 或换个端口
blog serve --dev-addr 127.0.0.1:8001

SSH 密钥登录配置与禁用密码

场景:服务器安全加固,禁止密码登录,只允许密钥认证。

1. 本地生成密钥对

ssh-keygen -t ed25519 -C "your@email.com" -f ~/.ssh/id_ed25519

2. 上传公钥到服务器

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host

如果终端无法交互输入密码,可借助 sshpass

brew install sshpass
sshpass -p 'your_password' ssh-copy-id -i ~/.ssh/id_ed25519.pub -o StrictHostKeyChecking=no user@host

3. 验证密钥登录

ssh user@host

4. 禁用密码登录(服务器端)

确认密钥可以正常登录后再执行,否则会被锁在外面:

# Ubuntu/Debian 系统
sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart ssh

# CentOS/RHEL 系统
sudo systemctl restart sshd

验证设置是否生效:

grep PasswordAuthentication /etc/ssh/sshd_config
# 应输出:PasswordAuthentication no

SSH WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

场景:SSH 连接远程服务器时出现告警,连接被拒绝。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Host key verification failed.

原因:服务器重装系统、更换 IP、或 IP 被复用,导致 SSH 指纹与本地 ~/.ssh/known_hosts 记录不符。

注意:极少数情况下可能是真实的中间人攻击,确认服务器状态后再操作。

修复

# 删除旧的指纹记录(替换为实际 IP)
ssh-keygen -R 106.75.33.93

# 重新连接,输入 yes 信任新指纹
ssh user@106.75.33.93