当您使用 Git、连接到远程服务器和自动化部署时,SSH 密钥是 Python 开发的必需品。让我们来看看如何在 Ubuntu Linux 上生成 SSHkey 对,它在一对中包含公钥和私钥。
生成公钥和私钥
在 Ubuntu 中打开一个新的终端窗口,如下面的屏幕截图所示。
ssh-keygen
命令提供了一个交互式命令行界面,用于生成公钥和私钥。使用以下 ssh-keygen
和 -t
参数调用 -b
以确保我们获得 4096 位 RSA 密钥。您也可以选择使用 -C
指定您的电子邮件地址(否则将从您当前的 Linux 帐户生成一个):
ssh-keygen -o -t rsa -b 4096 -C [email protected]
(注意:-o
选项是在 2014 年引入的;如果您执行此命令失败,只需删除 -o
选项即可)
您将看到的第一个提示询问将密钥保存在何处。但是,实际上会生成两个文件:公钥和私钥。
Generating public/private rsa key pair. Enter file in which to save the key (/home/matt/.ssh/id_rsa):
此提示是指私钥,无论您输入什么,都会为公钥生成第二个文件,该文件具有相同的名称并附加了 .pub
。
如果您已经有了一个密钥,您应该指定一个新的文件名。我使用许多 SSH 密钥,所以我通常将它们命名为“test-deploy”、“prod-deploy”、“ci-server”以及唯一的项目名称。命名是计算机科学中的难题之一,因此请花点时间想出一个适合您和与您一起工作的开发团队的系统!
接下来您将看到输入可选密码的提示:
Enter passphrase (empty for no passphrase):
您是否需要密码取决于您将如何使用密钥。每当您使用 SSH 密钥时,系统都会要求您提供密码,因此它更安全。但是,如果您使用持续集成服务器(如 Jenkins)进行自动化部署那么您将不需要密码。
请注意,如果密码丢失,则无法恢复。保持该密码安全可靠,否则必须生成一个全新的密钥。
输入密码(或直接按 enter 不输入密码)两次。您将看到如下输出:
Your identification has been saved in /home/matt/.ssh/prod_deploy. Your public key has been saved in /home/matt/.ssh/prod_deploy.pub. The key fingerprint is: SHA256:xoCWgk40XfM5mruZQNCVoBKXZ4d0gn09ivVENacb7xw [email protected] The key's randomart image is: +---[RSA 2048]----+ |.oo*==oo..o . | |.+*.*** = + | |o+.++=.B .o | |+ .o. +oo + | | . . o S . E | | . .. o . | | . . o | | . + | | + | +----[SHA256]-----+
您的 SSH 密钥现已生成并可以使用了!
现在怎么办?
现在您已经有了公钥和私钥,我建议您使用以下教程之一设置 Python 开发环境,以便您可以开始编码:
- 在 Ubuntu 16.04 LTS 上设置 Python 3、Django 和 Gunicorn
- 如何在 Ubuntu 16.04 上将 Redis 与 Python 3 和 redis-py 结合使用
- 在 Ubuntu 16.04 上设置 PostgreSQL Ubuntu 16.04 上的 Python 3 和 psycopg
额外的ssh-keygen
命令资源:
- ubuntu manuals ssh-keygen
- 生成新的 SSH 密钥并将其添加到 ssh-agent
有问题吗?通过 Twitter@fullstackpython 或@mattmakai 与我联系。我也在 GitHub 上,用户名是 mattmakai。
看到这篇文章有什么问题了吗?在 GitHub 上创建此页面的源代码并提交拉取请求。