发布于 

SSH问题汇集笔记

简介

最近换了电脑并且升级了 macOS,发现在使用 SSH 遇到了一些问题,在此记录希望能帮到更多的朋友。

无法连接远程服务器

执行远程连接,如下

1
ssh root@ip.ip.ip.ip 

控制台提示如下错误:

1
2
Unable to negotiate with legacyhost: no matching key exchange method found.
Their offer: diffie-hellman-group1-sha1

解决方案

1、创建 ~/.ssh 目录

2、在~/.ssh 目录下新建 config 文件

1
2
3
4
5
mkdir ~/.ssh

cd ~/.ssh

touch config

3、编辑 config 文件,写入如下内容

1
2
Host *
KexAlgorithms +diffie-hellman-group1-sha1

无法提交代码到 Github

当提交自己的代码到自己的 git 仓库时,发生了尴尬的一幕,提示的错误信息大致如下

1
Please make sure you have the correct access rights and the repository exists.

后面发现需要设置本地的公钥,该公钥相当于本地和远程 github 的链接桥梁,撸起袖子开搞。完整教程可以参考官方文档,戳我即可。

假设你的 github 账号名称是 zhanghao,邮箱是 zhanghao@126.com

1、全局配置账号和邮箱

1
2
3
git config --global  user.name "zhanghao"

git config --global user.email "zhanghao@126.com"

2、生成公私钥

1
ssh-keygen -t rsa -C "zhanghao@126.com"

在接下来提示的过程中,最好不要设置密码即直接回车。

完成之后,不出意外会在 ~/.ssh 目录下生成 id_rsa.pub 公钥文件和 id_rsa 私钥文件。

3、配置 github

登入 github,分别点击 Settings / SSH and GPG keys / New SSH key,复制 id_rsa.pub 公钥文件里面的内容粘贴保存即可。

在控制台测试一下是否成功

1
ssh -T git@github.com

提示如下信息即可表示成功

1
Hi zhanghao! You've successfully authenticated, but GitHub does not provide shell access

4、生成访问令牌(可选)

如果直接使用账号密码在控制台登入 github 是一件比较危险的事情,所以 github 采用了令牌的访问方式,一旦发生泄漏可以即可删除该令牌。

登入 github,分别点击 Settings / Developer settings / Personal access tokens / Generate new token

生成之后,需要你自己保存下来,在需要使用密码的地方使用该令牌即可。

清除本地公钥

我看自己的云主机 CPU 使用率一直很高,怀疑是中毒了,就给云主机重新安装了系统。

系统安装完成后,发现 ssh 连不上云主机了,并且在终端提示如下信息:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.

清除本地公钥命令如下,清除完成后重新使用 ssh 登录即可。

1
2
# 换成自己的云服务器外网IP
ssh-keygen -R ip-addr

命令 ssh-keygen -R ip 本质是清空 ~/.ssh/known_hosts文件内容,并给你做个备份重命名为 ~/.ssh/known_hosts.old,又学到一招。


勿以善小而不为


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

veryitman