SSH 多密钥配置

虚幻大学 xuhss 201℃ 0评论

? 优质资源分享 ?

学习路线指引(点击解锁) 知识定位 人群定位
? Python实战微信订餐小程序 ? 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
?Python量化交易实战? 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

目录* 前言


前言

当我们从 GitHub 克隆某个仓库时,往往使用 HTTPS 协议,除此之外,也可以使用 SSH 协议;当我们的客户机与远端服务器连接时,更加离不开 SSH 协议。如果我们需要连接多个远程终端,那么合理配置多个 SSH 密钥就显得很有必要。

本文首发于 正切橙的博客,更多详细信息请点击 这里,转载请注明出处。


一、SSH 是什么

SSH 全称为:Secure Shell,是一种加密的网络传输协议,通过在网络中创建安全隧道来实现客户端与服务器之间的连接。SSH 在 数据传输 时基本上都采用对称加密方式,但是在进行 身份验证 时却需要采用非对称加密的形式,也就是 公钥—私钥对 的形式。

二、密钥生成工具

生成 SSH 密钥对需要使用 ssh-keygen,如今的主流操作系统 Windows、Linux 和 macOS 等往往事先已经安装好了。

三、密钥类型

SSH 生成密钥对时可以使用多种加密算法,这些加密算法生成的最常用的密钥类型是 rsa 和 ed25519。

  • rsa:最常用的公钥加密算法,使用极其广泛,并且支持较好。密钥位数越多,安全性越好,但是性能会有所降低,常见的有 RSA 2048 和 RSA 4096 等。
  • ed25519:椭圆曲线算法生成的密钥,密钥长度短,安全可靠并且具有高性能。它的安全性在 RSA 2048 与 RSA 4096 之间,但是性能却在数十倍以上。(推荐使用

ed25519 需要 OpenSSH 版本大于 6.5(2014 年的古老版本),应该不会有人的客户端和服务器不满足吧(不会吧不会吧!)

四、本地配置

ssh-keygen 生成的密钥对默认存储于家目录(Windows 的 C:\Users\xxx,Linux/macOS 的 ~)的 .ssh 文件夹中

1.单密钥配置

使用 ssh-keygen 命令选择一种密钥类型来创建


|  | # 生成 RSA 2048 密钥 |
|  | ssh-keygen -t rsa -b 2048 -C "your@email.com" |
|  |  |
|  | # 生成 RSA 4096 密钥 |
|  | ssh-keygen -t rsa -b 4096 -C "your@email.com" |
|  |  |
|  | # 生成 ed25519 密钥 |
|  | ssh-keygen -t ed25519 -C "your@email.com" |
  • -t:选择生成密钥的类型
  • -b:设置密钥位数
  • -C:密钥注释,这里要改为你自己的邮箱地址

执行以上命令后,会提示你设置密钥存储路径,按 Enter 默认即可。

然后会提示你设置密码,根据需要自行选择设不设置(不设置按 Enter 即可,已经非对称加密过,不设置也问题不大;设置的话安全性会提高,但是每次连接时需要输入密码,会麻烦一点)。

以生成密钥 ed25519 为例,操作完后会在家目录的 .ssh 文件夹中生成私钥 id_ed25519 和公钥 id_ed25519.pub 两个文件。

权限设置

在 Linux 中,还需要设置私钥文件的权限才可使用:


|  | chmod 600 ~/.ssh/id\_ed25519 |

2.多密钥配置

如果你同时使用 GitHubGitee阿里云,都需要设置 SSH 密钥,可以将常用 SSH 登陆信息写进全局配置文件

打开终端,输入


|  | # 创建 .ssh 文件夹 |
|  | mkdir -p ~/.ssh |
|  |  |
|  | # 进入 .ssh 文件夹 |
|  | cd ~/.ssh |

以下介绍以生成 ed25519 密钥为例:


|  | # 生成 GitHub 密钥 |
|  | ssh-keygen -t ed25519 -f github\_ed25519 -C "your@email.com" |
|  |  |
|  | # 生成 Gitee 密钥 |
|  | ssh-keygen -t ed25519 -f gitee\_ed25519 -C "your@email.com" |
|  |  |
|  | # 生成 阿里云 密钥 |
|  | ssh-keygen -t ed25519 -f aliyun\_ed25519 -C "your@email.com" |
  • -f:生成密钥的名称,可自行修改

在 .ssh 文件夹下创建 config 文件(~/.ssh/config


|  | # ------------ 配置说明(始) ------------ |
|  |  |
|  | # Host:别名,HostName:服务器域名或 IP 地址 |
|  | # User:用户名 |
|  | # 例:在 git clone git@github.com:torvalds/linux.git 中 |
|  | # User 是 git,Host 是 github.com |
|  | # IdentityFile:私钥路径 |
|  |  |
|  | # ------------ 配置说明(末) ------------ |
|  |  |
|  |  |
|  | # ------------ 具体配置(始) ------------ |
|  |  |
|  | # GitHub 密钥 |
|  | Host github.com |
|  | HostName github.com |
|  | User git |
|  | PreferredAuthentications publickey |
|  | IdentityFile ~/.ssh/github\_ed25519 |
|  |  |
|  | # Gitee |
|  | Host gitee.com |
|  | HostName gitee.com |
|  | User git |
|  | PreferredAuthentications publickey |
|  | IdentityFile ~/.ssh/gitee\_ed25519 |
|  |  |
|  | # Aliyun |
|  | Host my\_aliyun |
|  | HostName xxx.xxx.xxx.xxx |
|  | User xxx |
|  | Port 22 |
|  | PreferredAuthentications publickey |
|  | IdentityFile ~/.ssh/aliyun\_ed25519 |
|  |  |
|  | # ------------ 具体配置(末) ------------ |

权限设置

在 Linux 中,配置文件 config 和私钥文件的权限都需要设置才可使用:


|  | chmod 600 config github\_ed25519 gitee\_ed25519 aliyun\_ed25519 |

五、远端配置

1.GitHub/Gitee

登陆 GitHub,依次打开 Settings => SSH and GPG keys => New SSH key

然后将公钥(切记是公钥)内容粘贴过去

最后,使用 ssh 命令测试与 GitHub 的连接


|  | ssh -T git@github.com |

提示时输入 yes 即可,如果出错,可以在 -T 后面加上 -v 参数查看具体错误信息

Gitee 和 GitHub 添加方法类似,不做赘述

2.服务器

在服务器系统中找到 ~/.ssh/authorized_keys 文件(没有则创建),另起一行,将本地公钥(切记是公钥)内容粘贴过去,并设置权限:


|  | chmod 600 ~/.ssh/authorized\_keys |

测试连接,以 多密钥配置阿里云 为例:


|  | # 使用 Host 别名 |
|  | ssh my\_aliyun |
|  |  |
|  | # 不使用 Host 别名 |
|  | ssh xxx@xxx.xxx.xxx.xxx |

转载请注明:xuhss » SSH 多密钥配置

喜欢 (6)

您必须 登录 才能发表评论!