如何设置SSH密钥

关于SSH密钥

SSH密钥提供了一种比使用单独的密码更安全的方式使用SSH登录到虚拟专用服务器。 虽然密码最终可能被暴力攻击破解,SSH密钥几乎不可能通过暴力破解。 生成密钥对提供了两个长字符串:公钥和私钥。 您可以将公钥放在任何服务器上,然后通过与已经具有私钥的客户端连接将其解锁。 当两者匹配时,系统解锁而不需要密码。 您可以通过使用密码保护私钥来提高安全性。

第一步 - 创建RSA密钥对

第一步是在客户端计算机上创建密钥对(很有可能这只是您的计算机):

ssh-keygen -t rsa

第二步 - 存储密钥和密码

一旦你输入了Gen Key命令,你会得到几个问题:

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

你可以在这里输入,将文件保存到用户主页(在这种情况下,我的示例用户称为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中

第三步 - 复制公钥

一旦生成密钥对,就可以将公钥放在我们要使用的虚拟服务器上。

您可以使用ssh-copy-id命令将公钥复制到新计算机的authorized_keys文件中。 请确保替换以下示例用户名和IP地址。

ssh-copy-id user@123.45.56.78

或者,您可以使用SSH粘贴密钥:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "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.
user@12.34.56.78's password: 
Now try logging into the machine, with "ssh 'user@12.34.56.78'", and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

现在你可以继续并登录到user@12.34.56.78,并且不会提示您输入密码。 但是,如果您设置了密码,将要求您输入密码短语(以及您日后登录时)。

可选第四步 - 禁用根登录的密码

一旦你复制你的SSH密钥对您的服务器确保您可以用SSH密钥单独登录 ,您可以继续限制root登录到只能通过SSH密钥被允许。

为了做到这一点,打开SSH配置文件:

sudo nano /etc/ssh/sshd_config

在该文件中,发现包括该行PermitRootLogin并对其进行修改,以确保用户只能用自己的SSH密钥连接:

PermitRootLogin without-password

将更改生效:

reload ssh

数字海洋附录

数字海洋控制面板允许您在创建新Droplet时向其添加公共密钥。 您可以在方便的位置(例如计算机)生成SSH密钥,然后将公用密钥上传到SSH密钥部分。

然后,当您创建新的VPS时,您可以选择在服务器上包括该公钥。 不会向您发送任何root密码,您可以从所选的客户端登录到您的新虚拟私人服务器。 如果您创建了密码,系统将提示您在登录时输入密码。

作者Etel Sverdlov
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏