帮酷LOGO
0 0 评论

正文
文章标签:SET  SSH  Ssh密钥  Ubuntu  KEY  keys  

介绍

在本指南中,我们将重点介绍为香草版Ubuntu 16.04安装设置SSH密钥。SSH密钥为你的服务器提供了一种简单,安全的登录方式,并且推荐用于所有用户。

第1步 - 创建RSA密钥对

第一步是在客户端机器(通常你的电脑)上创建密钥对:


ssh-keygen

默认情况下,ssh-keygen将创建一个2048-bit RSA密钥对,这对大多数用例(你可以选择通过-b 4096标志来创建更大的4096-bit键)来说。

输入命令后,你将看到以下输出:


OutputGenerating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):

ENTER将密钥对保存到主目录中的.ssh/子目录中,或者指定一个替代路径。

如果以前生成了SSH密钥对,则看到以下提示:


Output/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

如果选择覆盖磁盘上的密钥,则不能再使用前面的密钥进行身份验证,选择yes时要非常小心,因为这是一个破坏性的过程,不能逆转。

然后,你将看到以下提示:


OutputEnter passphrase (empty for no passphrase):

你可以选择输入一个安全密码,强烈建议你,口令短语添加了额外的安全层,以防止未经授权的用户登录,

然后,你将看到以下输出:


OutputYour identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+

你现在拥有了一个公钥和私钥,你可以使用它来验证,下一步是将公钥放置在服务器上,以便你可以使用基于SSH密钥的身份验证进行登录。

第2步-将公钥复制到Ubuntu服务器

将公钥复制到Ubuntu主机的最快方法是使用名为ssh-copy-id的实用程序,如果你的客户端上没有ssh-copy-id可用,则可以使用本节中提供的两种替代方法之一。

使用ssh-copy-id复制公钥

在许多操作系统中,ssh-copy-id工具是默认包含的,所以你可以在本地系统中使用它,

语法为:


ssh-copy-id username@remote_host

你可能会看到以下消息:


OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

这意味着本地计算机不识别远程主机,键入"yes"并按ENTER继续。

接下来,实用程序将扫描你的本地帐户,以获取我们先前创建的id_rsa.pub密钥,找到密钥后,它会提示你输入用户远程帐户的密码:


Output/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
username@203.0.113.1's password:

键入密码(你的键入将不会显示为安全目),并且按ENTER键,实用程序将使用你提供的密码连接到远程主机上的帐户,然后将~/.ssh/id_rsa.pub密钥的内容复制到名为authorized_keys的帐户~/.ssh目录的远程主页中的文件中。

你将看到以下输出:


OutputNumber of key(s) added: 1

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

此时,你的id_rsa.pub密钥已上传到远程帐户,

使用SSH复制公钥

如果你没有可用的ssh-copy-id,但是你有基于服务器的SSH访问的密码,你可以使用常规的SSH方法上传密钥。

我们可以使用cat命令来读取本地计算机上公用SSH密钥的内容,并通过SSH连接管理。

另一方面,我们可以确保~/.ssh目录存在,并且在使用的帐户下具有正确的权限。

然后我们可以输出我们在这个目录中被称为authorized_keys的文件的内容,使用>>重定向符号来附加内容,而不是覆盖它,

完整的命令如下所示:


cat ~/.ssh/id_rsa.pub | ssh username@remote_host"mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

你可能会看到以下消息:


OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

这意味着本地计算机不识别远程主机,键入"yes"并按ENTER继续。

之后,应提示你输入远程用户帐户密码:


Outputusername@203.0.113.1's password:

密码输入后,id_rsa.pub密钥的内容将被复制到用户远程帐户的authorized_keys文件的末尾,

手动复制公钥

如果你没有基于口令的SSH访问服务器,则必须手动完成上述过程。

我们手动将id_rsa.pub文件的内容附加到远程机器上的~/.ssh/authorized_keys文件中。

要显示id_rsa.pub密钥的内容,请将它键入到本地计算机中:


cat ~/.ssh/id_rsa.pub

你将看到密钥的内容,它应该类似于下面这样:


Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

使用任何可用的方法访问远程主机。

在远程服务器上访问你的帐户之后,你应该确保~/.ssh目录存在,如果需要,此命令将创建目录,或者如果已存在,则不执行操作:


mkdir -p ~/.ssh

现在,你可以在这个目录中创建或修改authorized_keys文件,你可以将id_rsa.pub文件的内容添加到authorized_keys文件的末尾,如果需要,使用此命令创建它:


echo public_key_string >> ~/.ssh/authorized_keys

在上面的命令中,替换 public_key_string 使用你在本地系统上执行的cat ~/.ssh/id_rsa.pub命令的输出,它应该从ssh-rsa AAAA...开始。

最后,我们确保~/.ssh目录和authorized_keys文件有适当的权限集:


chmod -R go= ~/.ssh

这个递归删除了~/.ssh/目录的所有"群组组"和"其它"权限。

如果使用root帐户设置用户帐户的密钥,则~/.ssh目录属于用户而不是root


chown -R sammy:sammy ~/.ssh

在本教程中,我们的用户名为 sammy

我们现在可以尝试使用Ubuntu服务器进行无密码认证。

第3步-使用SSH密钥对Ubuntu Server进行身份验证

如果已成功完成上述过程之一,则应能够在没有帐户远程密码的情况下登录到远程主机。

基本过程是相同的:


ssh username@remote_host

如果你第一次连接到此主机(如果使用上面的最后一个方法),你看到如下内容:


OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

这意味着本地计算机不识别远程主机,键入"yes",然后按ENTER继续。

认证之后,shell服务器上的配置帐户应该会打开一个新的会话。

如果密钥验证成功,继续学习如何通过禁用密码验证来进一步保护你的系统。

步骤4-在服务器上禁用密码身份验证

如果你能够使用SSH无需密码登录帐户,则说明你已成功为帐户配置了基于SSH密钥的身份验证。然而,基于密码的认证机制仍然处于活动状态,这意味着你的服务器仍然会受到暴力破解的攻击。

确认远程帐户具有管理权限后,使用SSH密钥登录到远程服务器,或者使用root或sudo特权,然后,打开守护进程文件的SSH配置:


sudo nano /etc/ssh/sshd_config

在文件中,搜索名为PasswordAuthentication的指令,取消注释行并将值设置为"no",这将禁用通过帐户密码登录SSH:

/etc/ssh/sshd_config

...
PasswordAuthentication no
...

保存并关闭文件,当你按下CTRL +X,然后Y确认保存文件,最后将ENTER退出,要实际实现这些更改,我们需要重新启动sshd服务:


sudo systemctl restart ssh

作为预防措施,打开一个新终端窗口,并且测试SSH服务在关闭此会话之前是否正常运行:


ssh username@remote_host

验证了SSH服务之后,就可以安全地关闭所有当前服务器会话。

你的Ubuntu服务器上的SSH守护进程现在只响应SSH密钥,已成功禁用基于密码的身份验证。

结束语

现在,你应该在服务器上配置了基于SSH密钥的身份验证,使你无需提供帐户密码即可登录。

如果你想了解有关使用SSH的更多信息,请查看SSH Essentials Guide



文章标签:SET  KEY  Ubuntu  SSH  keys  Ssh密钥  

正文

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语