如何设置SSH密钥

提供:ZStack云计算

关于SSH密钥

SSH密钥提供一种更为安全的虚拟专有服务器登录机制,即利用SSH而非单纯依靠密码完成登录。与易被窃取的密码不同,SSH密钥几乎无法以暴力方式破解。生成的密钥对为我们提供两条字符串,即公钥与私钥。大家可以将公钥保存在任意服务器,并利用配备有私钥的客户端对该服务器者访问。当二者匹配时,系统即会解锁而不再需要输入密码内容。另外,大家也可以对私钥进行保护以额外提升安全性水平。

第一步——创建RSA密钥对

第一步是在客户设备上创建密钥对:

ssh-keygen -t rsa

第二步——保存密钥与口令

输入Gen Key命令后,系统会提示以下问题:

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

这里可以直接按下回车,从而将该文件保存在用户home目录中(本示例中的用户名为demo)。

Enter passphrase (empty for no passphrase):

大家可以自行决定是否使用口令。输入口令的作法确有优势:无论密钥的安全性有多高,也无论其如何进行加密,最终效果依然取决于其是否无法为他人所获取。在使用口令时,即使受口令保护的私钥落入未授权用户手中,他们亦无法在不知道口令内容的情况下使用该私钥。当然,其缺点在于在每次使用时,我们都需要手动输入口令。

完整的密钥生成流程如下所示:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

现在公钥已经保存在/home/demo/.ssh/id_rsa.pub,而私钥则保存在/home/demo/.ssh/id_rsa。

第三步——复制公钥

密钥对生成完成后,我们需要将公钥放置在需要使用的虚拟服务器当中。

大家可以使用以下命令将公钥复制到新设备的authorized_keys文件当中。请确保将用户名与IP地址替换为您的实际值。

ssh-copy-id [email protected]

另外,大家也可以利用SSH直接粘贴密钥:

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

无论使用哪种方法,其显示结果应如下所示:

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
[email protected]'s password: 
Now try logging into the machine, with "ssh     '[email protected]'", and check in:

  ~/.ssh/authorized_keys

现在大家即可使用[email protected]实现登录而无需输入密码。不过,如果大家设置了口令,则需要在每次登录时都输入一次口令。

第四步(可选)——禁用Root登录密码

完成以上步骤后,我们还需要确保自己只能利用SSH密钥进行登录,即禁用root登录。

打开SSH配置文件:

sudo nano /etc/ssh/sshd_config

在文件中找到包含PermitRootLogin的一行,进行修改以确保用户只能利用SSH密钥完成登录:

PermitRootLogin without-password

重载以应用变更:

reload ssh

Digital Ocean Addendum

DIgital Ocean控制面板允许大家在创建新Droplet时为其添加公钥。大家可以在方便的位置生成SSH密钥,例如本地计算机,而后将其公钥上传至-SSH key位置。

此后,在我们创建新的VPS时,即可选择在服务器上使用该公钥。如此一来,服务器不会通过邮件向我们发送root密码,我们亦能够通过选定的客户端登录至新的虚拟专有服务器。如果大家创建了口令,则需要在每次登录时正确输入。

本文来源自DigitalOcean Community。英文原文:How To Set Up SSH Keys By Etel Sverdlov

翻译:diradw

猜你喜欢

转载自blog.csdn.net/zstack_org/article/details/71157842