重装了服务器系统,ssh证书更换,导致连不上服务器

今天重装了一台服务器,由debian改为ubuntu,使用阿里云重新绑定了密钥对,导致服务器连接失败。错误信息如下:

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

这个报错信息说明 服务器的主机密钥(Host Key)发生了变化,SSH 客户端发现和之前保存的不一致,所以拒绝连接。常见原因有:

  1. 服务器重装过系统,SSH 的 host key 变了。
  2. 更换了 IP 或 DNS 指向,连接到的机器其实不是原来的。
  3. 安全风险:如果不是你自己操作导致的变动,有可能存在中间人攻击(MITM)。

解决办法

如果你确认这是自己的服务器(比如你刚刚重装了系统或者更换了 SSH 配置),可以安全地删除旧的 key 再重新连接。

执行命令:

ssh-keygen -R server-ip

注意把server-ip改为你的服务器ip地址。这个命令是从~/.ssh/known_hosts文件中删除之前的连接记录,也可以直接编辑这个文件删除。

然后再次连接,会提示你保存新的主机指纹,输入 yes 即可。


如果提示Permissions 0644 for ....... are too open.这是证书文件的权限太大了,SSH 要求私钥文件必须 仅自己可读写,不能被其他用户访问。

执行下面的命令,修改私钥文件权限(只允许自己读写):

chmod 600 /Users/wujie/.ssh/aliyun99.pem

注意改为你自己的密钥路径,最后再次连接应该就可以了。

Git 初次提交:从 0 配置 SSH Key 到成功 push

1. 检查本地是否已有 SSH Key

ls -al ~/.ssh/

如果看到有 id_rsa、id_ed25519 或对应的 .pub 文件,说明已经有过 SSH Key。
如果没有,继续下一步生成。

2. 生成 SSH Key


推荐使用 ed25519 算法(更安全、更快):

ssh-keygen -t ed25519 -C "your_email@example.com"

如果想用 RSA 也可以:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

执行后会提示保存路径,直接回车即可(默认 ~/.ssh/id_ed25519)。
然后一路回车,直到生成完成。

3. 启动 ssh-agent 并添加私钥

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

如果你生成的是 RSA,那么就执行:

ssh-add ~/.ssh/id_rsa

4. 把公钥添加到远程仓库平台


查看公钥内容:

cat ~/.ssh/id_ed25519.pub

复制整行内容,到远程平台(比如 GitHub、GitLab、cnblogs tribe 等)的 SSH Keys 设置里添加。

5. 测试 SSH 连接


执行:

ssh -T git@tribe.cnblogs.com

如果配置正确,会输出类似:

Welcome to Git service...

如果提示 Permission denied (publickey),说明 key 没加对,要检查 .ssh/config 或公钥设置。

6. 配置 Git 远程仓库地址


查看当前远程地址:

git remote -v

如果地址不对(比如是 HTTPS),可以改为 SSH:

git remote set-url origin git@tribe.cnblogs.com:用户名/仓库名.git

7. 首次 push 代码

git add .
git commit -m "init commit"
git push --set-upstream origin main

如果前面步骤都成功,这里就能顺利把代码推送到远程仓库。

8. 额外(多钥匙管理)


如果你有多个 SSH Key,可以在 ~/.ssh/config 里写配置:

Host tribe.cnblogs.com
    HostName tribe.cnblogs.com
    User git
    IdentityFile ~/.ssh/id_ed25519

这样不同仓库可以指定不同的 key,避免冲突。

✨ 到这里,你就完成了 SSH Key 配置 + Git 初次 push 全流程。

SeccureCRT LINUX终端VI不显示彩色的解决办法

问题:SeccureCRT LINUX终端VI不显示彩色

现象: VI不显示颜色,而是使用下划线代替颜色.

分析: 这个问题是由变量TERM的值不合适导致的,运行命令echo $TERM显示:vt100

解决方法:

在~/.bashrc(或.profile环境变量文件)中设置$TERM为:xterm-color,如下所示:

export TERM=xterm-color

然后运行命令: source .bashrc后即可显示颜色。