小心灵学院
欢迎您的光临

Linux使用密钥对登录 提升安全等级

自然经常遇到一个问题,每次登录服务器经常可以开到这么一句提升“本次登录成功前,已有9w+次认证失败”,毫无疑问,这是被人爆破了。服务器经常被人爆破,如果你的密码太多与简单,有可能会把密码爆破出来。自然的终极解决方案就是采用密钥对登录,2048位的私钥别破解的几率几乎为0。

Linux使用密钥对登录 提升安全等级

密钥登录配置步骤

使用密钥登录分为3步:

1、生成密钥(公钥与私钥);
2、放置公钥到服务器~/.ssh/authorized_key文件中;
3、配置ssh客户端使用密钥登录。

一、生成密钥对

root@ZiranBoke:~#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   #这里输入私钥名,直接回车就可以名字就为括号中默认的名字
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:pIFBgxSNzGbaKtV9Z/LjMIKuOcXjC08TY4rfnXlnBGE root@iZwz9avyv2945ilt432lffZ
The key's randomart image is:
+---[RSA 2048]----+   #密钥的位数
| +o*+            |
|  B .+  E        |
| = .......       |
|. o . .++ o      |
| o .+...S*       |
|o. o=o. o +      |
|o o+o. . = .     |
| ..*oo o. +      |
|  +o+.+. o       |
+----[SHA256]-----+

查看生成的密钥文件:

root@ZiranBoke:~# ls -l .ssh/
total 16
-rw------- 1 root root  410 Mar 29 09:41 authorized_keys
-rw------- 1 root root 1766 Mar 29 09:39 id_rsa
-rw-r--r-- 1 root root  410 Mar 29 09:39 id_rsa.pub
-rw-r--r-- 1 root root  886 Mar 28 13:52 known_hosts

注意事项:

1、生成密钥对输入密码的作用是保护本地私有密钥的密码,也就是说,即使有人到用了你的计算机或私钥文件,没有这个密码依然不能使用你的私钥,在使用密钥登录时候也会要求你输入密码,这个密码就是生成密钥对时候输入的密码,用来解锁私钥文件,密码最低5个字符。

2、生成密钥对的私钥权限必须是600公钥权限是644,即只能本人可以查看私钥文件,除了本人以外的任何用户都不能产看,别人可以查看也就意味着任何人都可以通过这个私钥登录了,显然这是不安全的,公钥可以随便查看,但是不能修改内容,修改了还怎么配对登录。同时密钥对的父目录.ssh的权限必须是700即只有本人可以查看和进入。如果是通过命令新创建的.ssh默认就是700权限,创建完查看下就可以,如果不是更改权限。如果不是上面说的权限,客户端登录时候可能会出错。

二、通过scp命令将id_rsa.pub公钥文件复制到远程服务器:

root@ZiranBoke:~$ scp /home/pipci/.ssh/id_rsa.pub  [email protected]:/home/laopi/.ssh/
[email protected]'s password:
id_rsa.pub                                    100%  394     0.4KB/s   00:00    
root@ZiranBoke:~$

通过scp命令复制,前提是远程服务器已经开启ssh密码登录,将公钥文件复制到用来管理用户主目录下面的.ssh目录如果不存在先创建这个目录。这个.ssh的目录权限
也要设置成700不让其他用户进入更改,上面的例子远程服务器的ip地址为192.168.1.166用户名为laopi(普通用户)

三、远程服务器的配置

1、将上传的公钥文件导成或重命名成authorized_keys文件
root@ZiranBoke:~$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
2、编辑ssh的配置文件
vim /etc/ssh/sshd_config
PubkeyAuthentication yes                      #允许公钥认证                    
AuthorizedKeysFile .ssh/authorized_keys       #指定包含用于用户身份验证的公钥的文件
PermitRootLogin no                            #选项前面可以加#号注释掉,同样会禁用root用户
PasswordAuthentication no                     #选项前面可以加#号注释掉,同样会禁用密码登录
3、重启一下ssh服务,这样ssh配置才能生效:
root@ZiranBoke:~# systemctl restart sshd.service

ssh-keygen命令常用选项

$ ssh-keygen 参数

常用参数:
-t 指定要创建的密钥类型,如:-t dsa(SSH-2) | ecdsa | ed25519 | rsa(SSH-2)| rsa1(SSH-1)
-b bits 指定密钥长度。对于 RSA 密钥,最小要求 768 位,默认是 2048 位
-C comment 提供一个注释。
-N new_passphrase 提供一个新的密语。
-F hostname
在 known_hosts 文件中搜索指定的 hostname ,并列出所有的匹配项。 这个选项主要用于查找散列过的主机名/ip地址,还可以和 -H 选项联用打印找到的公钥的散列值。
-H 对 known_hosts 文件进行散列计算。这将把文件中的所有主机名/ip地址替换为相应的散列值。原来文件的内容将会添加一个".old"后缀后保存。这些散列值只能被 ssh 和 sshd 使用。这个选项不会修改已经经过散列的主机名/ip地址,因此可以在部分公钥已经散列过的文件上安全使用。
-R hostname
从 known_hosts 文件中删除所有属于 hostname 的密钥。这个选项主要用于删除经过散列的主机(参见 -H 选项)的密钥。
-f filename 指定密钥文件名
-l 显示公钥文件的指纹数据。它也支持 RSA1 的私钥。对于 RSA 和 DSA 密钥,将会寻找对应的公钥文件,然后显示其指纹数据。

总结

采用密钥对登录可以有效的避免服务器被人成功爆破,如果你不是很习惯采用密钥登录。可以退而求其次,修改ssh端口,设置口令失败次数自动拉黑ip。

赞(1)
未经许可不得转载:小心灵学院 » Linux使用密钥对登录 提升安全等级
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址