关于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密码,您可以从所选的客户端登录到您的新虚拟私人服务器。 如果您创建了密码,系统将提示您在登录时输入密码。