在macOS Sierra(10.12)和High Sierra(10.13)上生成SSH密钥

・4 分钟阅读

本教程将向你展示如何在macOS Sierra(10.12)和macOS High Sierra(10.13)上生成和保护SSH密钥。SSH密钥允许你在没有密码的情况下登录到服务器,它们有更强的抵抗暴力攻击能力,可以增加便利性和安全性。

密钥类型

可以选择几种不同的键类型,生成时使用-t参数,例如,ssh-keygen -t ed25519 ,ED25519密钥类型使用椭圆曲线签名,比DSA或ECDSA更安全,性能更高。现代的SSH软件(例如,OpenSSH6.5版以后)支持ED25519密钥类型,但是,你仍然会碰到不兼容的软件,因此默认密钥类型仍然是RSA。

默认密钥类型为2048-bit RSA,它提供了良好的安全性和兼容性,为了提高安全性,可以使用生成上的-b参数选择更大的密钥大小,例如,ssh-keygen -b 4096来创建一个4096-bit RSA密钥对。

生成密钥

要生成SSH密钥,你需要打开"应用程序>实用工具>终端"中找到。

要创建4096-bit RSA密钥对,请输入:

 
ssh-keygen -b 4096

 

然后你会看到:


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

按Enter/Return会把你的新密钥对保存到默认位置,然后,你将可以选择创建密码,该密码将加密密钥,以便在未经授权的情况下无法使用密钥。


Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa. 
Your public key has been saved in id_rsa.pub. 
The key fingerprint is:
SHA256:0irBXp+xKwT5e0ZFklbEVkzxu0Bzv9PmvstFD5w6zlQ username@Your-Mac.local 
The key's randomart image is: 
+---[RSA 4096]----+
| =o++. |
| + + .. |
| . . + o o |
| .o . .. + + |
| ooo S. . E o|
| . oo+.+ + ++|
| o..o+ + .o=|
| .o o. + ..oo|
| +. o ==|
+----[SHA256]-----+

此时,密钥对已经创建并存储在~/.ssh/id_rsa中,要使密钥可用于系统,并将密码存储在系统钥匙串中,我们需要完成几个额外的步骤,请注意,只有在每次使用时,不希望输入密钥密码时,才需要这样做。

向SSH代理添加新的密钥

输入ssh-add -K ~/.ssh/id_rsa,然后提示你输入密码短语,你将看到以下内容:


Identity added: id_rsa (username@Your-Mac.local)

如果要使用此SSH密钥登录已创建的服务器,可以使用ssh-copy-id工具存储服务器上的公钥。

向远程服务器添加新密钥

使用ssh-copy-id


# Substitute your server IP
ssh-copy-id -i ~/.ssh/id_rsa root@192.0.2.1

由于远程服务器还不知道你的密钥,控制台会请求你的登录密码,你将看到以下内容:


/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed:"id_rsa.pub"

Number of key(s) added: 1

Now try logging into the machine, with:"ssh 'root@192.0.2.1'"
and check to make sure that only the key(s) you wanted were added.

你现在可以尝试使用ssh root@192.0.2.1登录到远程服务器,应该不会提示使用密码来连接了。

Hrh profile image