SSH密钥使您无需密码即可登录服务器。通过显着提高对暴力攻击的抵抗力,它们提高了便利性和安全性。
SSH(安全外壳)是最常用于远程管理和文件传输的协议,通常称为sFTP(安全文件传输协议)。当访问诸如Vultr VPS之类的远程服务器时,建议将SSH与PKE(公共密钥交换)一起使用,该服务器使用密钥对,其中将公钥提供给服务器,并将私钥存储在计算机上。
通过在云服务控制面板中添加公共密钥,可以在安装过程中将SSH密钥自动添加到服务器。您可以在云服务上管理SSH密钥。重要的是要记住,这些仅是您的公共密钥(通常用表示.pub
),切勿公开您的私有密钥。
按键类型
可以选择几种不同的键类型。-t
在生成时使用参数,例如ssh-keygen -t ed25519
。ED25519密钥类型使用椭圆曲线签名,比DSA或ECDSA更安全,性能更高。大多数现代的SSH软件(例如6.5版以来的OpenSSH)都支持ED25519密钥类型,但是您可能仍然会发现不兼容的软件,因此默认密钥类型仍然是RSA。
默认密钥类型为2048位RSA,可提供良好的安全性和兼容性。为了提高安全性,可以使用-b
生成时的参数选择较大的密钥大小,例如ssh-keygen -b 4096
创建4096位RSA密钥对。
密钥生成
要生成SSH密钥,您需要打开Terminal.app
“应用程序>实用程序>终端”中的内容。
要创建4096位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
:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@0.0.0.0
执行后,会拷贝到~/.ssh/authorized_keys中。
由于远程服务器尚不知道您的密钥,因此控制台将要求您输入登录密码。您将看到以下内容:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/username/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@0.0.0.0'"
and check to make sure that only the key(s) you wanted were added.
现在,您可以尝试使用登录到远程服务器,ssh root@0.0.0.0
并且应该在没有密码提示的情况下进行连接。