别再用密码登录服务器了,请使用密钥认证登录

对于服务器(linux)的安全,有很多方面要做,但首先要做的必须是登录的安全。通常大家都使用SSH连接服务器,这貌似也是唯一的方式(除非你到机房登录)。那么如何更安全地登录呢?当然是如题所说的方式基于密钥认证的登录了,不过我们先来了解下基于口令认证的登录。

登录方式1:基于口令认证的ssh登录

大白话就是用账号密码登录。就这么一句话还了解啥,那就请看官再来了解下SSH。

SSH,全称Secure Shell是一种网络协议,一种加密协议,简单理解就是非常安全的shell,不仅在登陆过程中对密码进行加密传送,而且对登陆后执行的命令的数据也进行加密,这样即使别人在网络上监听并截获了你的数据包,他也看不到其中的内容。SSH之所以能够保证安全,原因在于它采用了公钥加密。

我们来看下这个加密的过程:

别再用密码登录服务器了,请使用密钥认证登录

password login

这里先了解下加密,SSH是使用非对称加密。如果您使用您的公钥加密某些东西,那么只有您的私钥才能解密它。同样,一旦您使用您的私钥加密某些东西,它就只能由您的公钥解密。

按照上面的介绍,使用密码登录应该很安全的啊,密码传输也加密了啊,为什么不安全呢?问这个问题的是大多数人,我也在其中。少数发现其中漏洞的呢也就成为了黑客,不安全的原因也就是传说中的“中间人攻击”。

我们来看下中间人攻击的过程:

攻击者位于用户和服务器之间,所以称为中间人。中间人攻击使你每次登录都带有潜在风险,中间人在和你同一个网络环境,比如公共wifi环境,就能轻易截获和伪装成服务器窃取你的密码。

其实就算没有中间人攻击,由于你的密码设置过于简单,也很容易被暴力破解,设置太复杂自己又记不住,所以较好的解决方法就是使用密钥认证的方式登录。

登录方式2:基于密钥认证的ssh登录

大致过程如下:

到这里细心的你一定会注意到为啥这里是用户生成的公钥给服务器,前面密码认证登录怎么是服务器发公钥给用户呢?为啥密码认证登录没有创建密钥也会有公钥呢,这就是SSH本身就拥有密钥,才能实现安全的shell。

密码认证的登录使用的是服务器上/etc/ssh下的公钥,而密钥认证的登录则同时使用了用户的密钥和服务器的密钥,相当于使用了双向加密。

别再用密码登录服务器了,请使用密钥认证登录

key-based login

密钥认证登录的配置

# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):<==设置密钥的密码,不设置直接回车
Enter same passphrase again:
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:
SHA256:Vilgr/zCNgLfZySdvYWuvpPVA+5dyzrpRvdmVi7ZrmM root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|      o          |
|     . o   .     |
|        o o      |
|     . o =..     |
|  .   + S.oo.    |
|   o o = .oo+ o .|
|    o * ++oo * *.|
|     o =o.. = E B|
|       .+o oo+.O.|
+----[SHA256]-----+

1.这里直接在服务器上生成密钥对,当然也可以在SSH客户端上生成,如使用putty,SecureCRT,xshell,MobaXterm等。将私钥/root/.ssh/id_rsa拷贝至本地,并将服务器上的私钥删除。在linux服务器之间传输密钥可以用ssh-copy-id

2.编辑linux服务器的ssh服务的配置文件/etc/ssh/sshd_config,把下面三行前面的注释#去掉,保存退出,重启sshd服务。

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile      .ssh/authorized_keys <==指定密钥文件名

3.测试登录,在SSH客户端指定私钥文件路径即可,linux作为客户端的也很简单,使用ssh命令即可连接。

#ssh -i /home/user1/id_rsa aledk@192.168.1.30
-i:指定用户登录的密钥文件

普通用户密钥登录需要注意:

a. ssh权限为700
b. authorized_keys权限为600(644也可以)
c. 输入密钥路径时必须要在家目录下即/home下的具体用户名,“Enter file in which to save the key (/root/.ssh/id_rsa): ”

4.测试登录成功后,就可以关闭密码认证的登录方式了,找到下面这一行,设为 no,保存后重启sshd服务

PasswordAuthentication no
展开阅读全文

页面更新:2024-02-11

标签:密钥   密码   服务器   中间人   攻击者   字符串   口令   路径   客户端   命令   过程   简单   方式   数码   用户

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top