4

翻译:疯狂的技术宅
英文标题:Creating SSH Keys on macOS Sierra
英文原文:https://www.fullstackpython.c...
本文首发微信公众号:充实的脑洞

把程序部署到服务器通常需要用到 SSH 密钥。SSH 密钥由公钥和私钥文件两部分组成。在同步远程 Git 存储库、连接到远程服务器、通过配置管理工具 (如 Ansible) 自动化应用程序的部署时, 都可以使用私钥来进行身份验证。下面让我们学习如何在 macOS Sierra 上生成 SSH 密钥对。

生成新密钥

首先在 macOS 上打开一个终端窗口。

ssh-keygen命令提供了一个交互式命令行界面, 用于生成公钥和私钥。运行 ssh-keygen命令时要使用下面的-t-b参数, 以确保能够得到 4096 位的 RSA 密钥。请注意, 必须在 macOS 中使用 2048 位或更强的密钥, 否则系统将会拒绝你使用它连接到服务器。

你也可以用-C 指定自己的电子邮件地址 (否则将从当前的 macOS 帐户中生成一个):

ssh-keygen -t rsa -b 4096 -C my.email.address@company.com

接下来看到的第一个提示是询问保存密钥的位置。实际上将会生成两个文件: 公钥和私钥。

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/matt/.ssh/id_rsa):

提示中id_rsa指的是默认的私钥文件名,不管输入什么,都会同时生成与私钥名称相同的,以.pub为后缀的的公钥文件。

如果你之前已经有了一对密钥文件,那么应该取一个新的文件名。通常我会使用很多SSH密钥,所以我把它们命名为“test-deploy”,“prod-deploy”,“ci-server”以及一个独特的项目名称。命名是计算机科学的难题之一,所以花点时间来想出一个适合你的命名系统吧!

接下来,你将看到一个可选密码的提示:

Enter passphrase (empty for no passphrase):

是否需要这个密码取决于你讲如何使用密钥。当你使用SSH密钥时,系统会向你询问这个密码,尽管MacOS可以使用钥匙串来存储这个密码,但是如果你想使用Jenkins这样的持续集成服务器进行自动部署的话,那么就不要设定这个密码。

请注意,如果你忘记了这个密码,是没有办法找回来的。要保证这个密码的安全性,否则一旦丢失或泄露,你就要重新生成密钥对。

输入密码两次(或者直接回车不设定密码),你将看到下面的输出:

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/matt/.ssh/deploy_prod.
Your public key has been saved in /Users/matt/.ssh/deploy_prod.pub.
The key fingerprint is:
SHA256:UnRGH/nzYzxUFS9jjd0wOl1ScFGKgW3pU60sSxGnyHo matthew.makai@gmail.com
The key's randomart image is:
+---[RSA 4096]----+
|        ..+o++**@|
|       . +.o*O.@=|
|        . oo*=B.*|
|       . .  =o=+ |
|      . S E. +oo |
|       . .  .  =.|
|              . o|
|                 |
|                 |
+----[SHA256]-----+

你的SSH密钥已经生成并且可使用了!

接下来做什么?

现在你已经有了公钥和私钥,接下来你就可以对服务器进行免密登陆或进行自动化部署了。附上两个 ssh-keygen 命令相关的资源:

关注微信公众号:充实的脑洞, 一个技术宅的保留地

疯狂的技术宅
44.4k 声望39.2k 粉丝