部署 Python 应用程序通常需要 SSH 密钥。 SSH 密钥同时具有公钥文件和私钥文件。您可以在同步远程 Gitrepositories 时使用私钥进行身份验证,连接到远程服务器并通过 Ansible 等配置管理工具自动部署应用程序。让我们学习如何在 macOS Sierra 上生成 SSH 密钥对。
生成新密钥
进入“应用程序/实用程序”并打开“终端”,在 macOS 上打开一个新的终端窗口。
ssh-keygen
命令提供了一个交互式命令行界面,用于生成公钥和私钥。使用以下 ssh-keygen
和 -t
参数调用 -b
以确保我们获得 4096 位 RSA 密钥。请注意,您必须在 macOS Sierra 中使用 2048 位或更多位的密钥,否则系统将不允许您使用它连接到服务器。
您还可以选择使用 -C
指定您的电子邮件地址(否则将从您当前的 macOS 帐户生成一个):
ssh-keygen -t rsa -b 4096 -C [email protected]
您将看到的第一个提示询问将密钥保存在何处。但是,实际上会生成两个文件:公钥和私钥。
Generating public/private rsa key pair. Enter file in which to save the key (/Users/matt/.ssh/id_rsa):
此提示是指私钥,无论您输入什么,都会为公钥生成第二个文件,该文件具有相同的名称并附加了 .pub
。
如果您已有密钥,请指定一个新文件名。我使用许多 SSH 密钥,所以我经常将它们命名为“test-deploy”、“prod-deploy”、“ci-server”以及唯一的项目名称。命名是计算机科学中的难题之一,因此请花点时间想出一个适合您的系统!
接下来您将看到输入可选密码的提示:
Enter passphrase (empty for no passphrase):
您是否需要密码短语取决于您将如何使用密钥。每当您使用 SSH 密钥时,系统都会要求您提供密码短语,尽管 macOS 可以在您第一次输入密码短语后将其存储在系统钥匙串中。但是,如果您使用像 Jenkins 这样的持续集成服务器进行自动化部署,那么您将不需要密码。
请注意,如果密码丢失,则无法恢复。保持该密码安全可靠,否则必须生成一个全新的密钥。
输入密码(或直接按 enter 不输入密码)两次。您将看到如下输出:
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 [email protected] The key's randomart image is: +---[RSA 4096]----+ | ..+o++**@| | . +.o*[email protected]=| | . oo*=B.*| | . . =o=+ | | . S E. +oo | | . . . =.| | . o| | | | | +----[SHA256]-----+
您的 SSH 密钥可以使用了!
现在怎么办?
既然您已经有了公钥和私钥,我建议您构建和部署一些 Python 网络应用程序,例如:
- 构建您的第一个 Slack 机器人
- 通过 REST API 发送图片或视频消息
- 使用 Bottle 网络框架拨打外拨电话
额外的ssh-keygen
命令资源:
- macOS Sierra 上的 SSH 密钥
- 生成新的 SSH 密钥并将其添加到 ssh-agent
有问题吗?通过 Twitter@fullstackpython 或@mattmakai 与我联系。我也在 GitHub 上,用户名是 mattmakai。
看到这篇文章有什么问题了吗?在 GitHub 上创建此页面的源代码并提交拉取请求。