###SSH密钥简介:
出于安全性,防止服务器被暴力破解。我们可以选择SSH密钥登陆。
SSH密钥由一个公钥和一个私钥组成一对。公钥安装在服务器上,可以理解成一把锁,私钥安装在客户机上,相当于一把钥匙。
以前,我们输入的密码相当于那把钥匙,但是,很多人为了方便,把密码设置的极为简单(16位以下的密码都是简单密码,字典破解只需要几天时间。)有些人防护意识比较强,设置20-30位密码,但是记忆难度很大,每次输入又比较麻烦。
SSH密钥完美解决了这个相对矛盾的问题:客户机上的私钥为一个文件,每次验证的时候只需要验证客户机上的私钥文件与服务器上的公钥是否匹配就可以。如果担心私钥文件被盗取,还可以给私钥设上一个相对简单的密码,相当于双重认证。这样,如果想要破解服务器,必须要拿到私钥,然后暴力破解私钥密码,这样的安全系数已经很高了。
###Ubuntu 18.04 生成密钥:
我们先要生成一个密钥对,也就是公钥和私钥。生成密钥对需要linux操作系统。所以如果你在客户机上生成密钥对,你需要把公钥上传到服务器上。如果你在服务器上生成密钥对,你需要把私钥下载到客户机上。本人的客户机是Windows10,所以我选择在服务器上生成密钥对。
先通过ssh密码登陆服务器,然后:
input:ssh-keyge
output:Enter file in which to save the key (/root/.ssh/id_rsa):
//这句话的意思是你希望把生成的密钥对放在哪个位置,默认的是:/root/.ssh/id_rsa 默认就好,所以我们这里直接回车就好。
output:Enter passphrase (empty for no passphrase):
//这句话的意思是是否设置双重认证,就是为你的私钥添加一个密码,如果图方便,直接回车就好,如果为了更加安全,设置个简单密码就好。
//如果设置了双重认证,需要再一次确认密码
output:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
aa:8b:61:13:38:ad:b5:49:ca:51:45:b9:77:e1:97:e1 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| .o. |
| .. . . |
| . . . o o |
| o. . . o E |
|o.= . S . |
|.*.+ . |
|o.* . |
| . + . |
| . o. |
+-----------------+
//完成
###把密钥下载到客户机:
Windows中的xshell配套的xftp 或者 Finalshell 都支持文件互传,作者使用的是Finalshell:
id_rsa 是私钥 id_rsa.pub是公钥。我们只需要右键私钥,点击下载就好了。
这样,我们的客户机上就有钥匙了。
###Ubuntu 18.04启用SSH密钥 禁用密码:
input: cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys //这一步是把生成的公钥导入到ssh的配置文件中
input: chmod 600 authorized_keys //以防万一,我们给予文件更高的权限
input: chmod 700 /root/.ssh
input:vim /etc/ssh/sshd_config //打开ssh配置文件
找到PubkeyAuthentication(在第37行),默认的话,是被注释的,并且为no,我们把注释去掉,并且改为yes //开启密钥登陆
找到PasswordAuthentication(在第56行),默认的话,是被注释的,并且为yes,我们把注释去掉,并且改为no //关闭密码登陆
input:service sshd restart //重启ssh服务
如图所示:
###完成,检验:
现在我们关闭当前的SSH链接,重新链接一下,发现密码登陆使用不了了,只能用密钥登陆,成功。
---------------------
作者:傻蛋的阿简
来源:CSDN
原文:https://blog.csdn.net/shadandeajian/article/details/81777551
版权声明:本文为博主原创文章,转载请附上博文链接!
# 以下是实际过程中产生的问题
现在遇到的问题是,使用puttygen进行PPK编码然后Putty进行登录时候提示
Server refused our key
WTF,问题出在哪里,尝试了很多。 发现
在使用一下方案后问题解决
-
chown $USER:$USER ~/.ssh -R
-
改变
/etc/ssh/sshd_config
所以它包含AuthorizedKeysFile %h/.ssh/authorized_keys 实际上是把“#”注释去掉就行了
-
sudo service ssh restart
整个世界清净了.