翻译:疯狂的技术宅
英文标题: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
命令相关的资源:
关注微信公众号:充实的脑洞, 一个技术宅的保留地 | |
---|---|
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。