逗比云还是逃不过被墙的命运,既然如此那以后逗比云也就一直用被墙的旧域名 [softs.wtf] 算了。
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程
广告

Linux 更换密码登陆方式 为使用 Key密匙安全登陆,避免被暴力破解密码

Linux教程 Toyo 37评论
广告
本文最后更新于 2018年11月9日 08:04 可能会因为没有更新而失效。如已失效或需要修正,请留言!

目前很多人还是使用密码来登陆服务器,但是这样会有被暴力破解密码的危险(除非足够复杂),根据逗比们的要求,我写个更换密码登陆方式为 Key密匙登陆的简单教程好了。

本教程演示的是 ROOT用户关闭密码登陆方式,更换为 Key密匙方式登陆。其他非ROOT用户也差不多,不过 公私/私匙 的位置就变了。

同时也可以多个服务器共有一个密匙,也避免服务器太多分不清。

为了服务器安全,推荐:非22端口+Key密匙登陆+Key密匙密码,这样搭配最安全。

其他Linux安全类教程:https://doub.io/all-one/#服务器安全类

制作密匙对

依赖确认

首先确保你的系统安装了 openssl

openssl -V

# 正常情况下会返回一大串内容,如果提示 -bash: openssl: command not found 则代表未安装,用下面的命令安装:
# CentOS 系统:
yum install openssl -y

# Debian/Ubuntu 系统
apt-get install openssl -y

生成密匙对

我们执行下面这个命令,就会开始生成 ssh 密匙对(私匙+公匙),根据下面提示来生成。

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.
# 你的私匙位置 /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub.
# 你的公匙位置 /root/.ssh/id_rsa.pub

The key fingerprint is:
7c:25:bd:54:f5:fc:60:c0:86:c1:a0:32:7d:8a:80:c4 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|        .o.+..o..|
| o   . .  o o+ o.|
|. E o . .  .o + o|
| .   + +   o o o.|
|    . . S .   . .|
|         .       |
|        .        |
|                 |
|                 |
+-----------------+

配置服务器公匙

生成密匙对后,我们还要在服务器上面配置一下才能使用:

配置公匙

cd .ssh
# 进入 .ssh 目录

ls -a
# . .. id_rsa id_rsa.pub
# 查看当前文件夹(/root/.ssh/)下的公匙(id_rsa.pub)和私匙(id_rsa)

mv id_rsa.pub authorized_keys
# 重命名公匙(id_rsa.pub)

ls -a
# . .. authorized_keys id_rsa
# 再查看一次当前文件夹(/root/.ssh/)下的公匙是否重命名成功

chmod 600 authorized_keys
chmod 700 ~/.ssh
# 然后修改密匙文件的权限,避免被其他用户 修改/删除。
# chmod 600 - 只有属主有读写权限。
# chmod 700 - 只有属主有读、写、执行权限。

配置SSH

然后我们就需要配置 SSH了,需要开启 Key密匙登陆选项(一般默认都是开启的)

vi /etc/ssh/sshd_config

打开配置文件,找到下面几个参数:

RSAAuthentication yes
PubkeyAuthentication yes
# yes 代表开启密匙登陆

一般默认都是yes开启的,如果不是,那就改为yes

然后重启SSH:

/etc/init.d/ssh restart
# 如果这个提示没有找到服务,那么试试 /etc/init.d/sshd restart
# CentOS7 则使用:systemctl restart sshd

配置客户端私匙

服务器配置完毕,我们还需要配置SSH连接客户端。

私匙取回本地

cat /root/.ssh/id_rsa
# 如果私匙生成位置不一样,自己改

首先我们读取 id_rsa 密匙文件,然后屏幕上会输出一大串的密匙,我们在本地电脑上面新建一个文本文件,并把屏幕上面的密匙复制出来写入文件内,文件取名为 id_rsa (这个名称随意,但这个密匙文件一定要保存好!)。

# 密匙文件就像这样

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,EA47822BC49A9E56338A99D07084DA38
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
...
...
-----END RSA PRIVATE KEY-----

然后我们打开SSH连接客户端,我用的是 Xshell,这里演示如何导入私匙。

Xshell导入私匙

首先打开当前会话的属性 —— 连接 —— 用户身份验证

用户身份验证方法选择 Public Key ,然后我们点击 浏览 按钮。

在用户密匙管理窗口中,点击 导入 按钮,并选择刚刚我们取回的私匙文件 id_rsa

选择后会让你输入 私匙的密码,如果你上面生成密匙对的时候设置了密码,那么就输入密码,否则留空。然后点击 确定 按钮继续。

选择你刚刚添加的 用户密匙,点击 确定 按钮。(为了识别性好一些,可以重命名一下名称,避免分不清密匙是哪个服务器的)

这时候又回到 用户身份验证设置窗口了,我们填写用户名:root密码:用户密匙的密码,点击 确定 按钮即可。

然后我们就可以断开服务器连接,然后重新连接服务器试试(使用密匙连接),如果出问题了也没事,我们暂时还没有关闭密码登陆,还可以用密码登陆上去排错。

如果确定可以正常使用 Key密匙登陆了,那么我们就需要关闭 密码登陆方式了。

关闭密码登陆方式

我们打开 SSH的配置文件,找到下面这个参数。

vi /etc/ssh/sshd_config

# 默认这个参数选项就是 no,如果不是则改为 no,如果前面有 注释符# 那么就去掉 #
PasswordAuthentication no

最后重启SSH:

/etc/init.d/ssh restart
# 如果这个提示没有找到服务,那么试试 /etc/init.d/sshd restart

其他说明

多服务器共用同一个密匙

当你有很多服务器,但是你不想单独给每个服务器生成一个个单独的密匙,那么你可以多个服务器共用一个密匙。

公匙位置也是和上面教程说的一样,假设我们是ROOT用户,那么在 /root 目录下新建一个 .ssh 目录:

mkdir /root/.ssh

然后把你的一个公匙(authorized_keys)通过FTP/SFTP上传到其他服务器的 /root/.ssh 目录内

或通过读取并写入的方式来写入其他服务器的 /root/.ssh 目录内

cat authorized_keys
# 在服务器上面读取你的 公匙文件内容,如果是在本地直接打开复制内容即可

echo -e "xxxx" > /root/.ssh/authorized_keys
# 然后把上面代码的 xxxx 改为你复制的公匙文件内容,然后用上面的命令写入到 /root/.ssh/authorized_keys  文件内。

然后再根据上面的 教程配置SSH即可。

转载请超链接注明:逗比根据地 » Linux 更换密码登陆方式 为使用 Key密匙安全登陆,避免被暴力破解密码
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (33)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(37)个小伙伴在吐槽
  1. 感谢楼主的教程,补充一下,在 centos 7 上的重启 sshd (server 端)的命令是: systemctl restart sshd
    fafa12342018-11-09 00:02 回复
  2. centos 7.4 vi /etc/ssh/sshd_config 打开配置文件: 没找到RSAAuthentication yes 只找到# PubkeyAuthentication yes 怎么回事?
    myunco2018-07-03 10:41 回复
    • 去掉公钥的注释即可,不需要私钥的,博主的教程大致是对的,很多细节说的不清楚或错误,需要订正
      米扑博客2018-10-14 00:10 回复
      • 主要是我平时也用不上这些,了解也很有限,很多细节也不清楚 :lol
        Toyo2018-10-14 00:24 回复
    • 原版配置文件是没有,不用在意,可以自己新增加一行。
      fafa12342018-11-09 00:03 回复
  3. XSELL在登陆时显示所选的密钥未在远程主机上注册请问怎么解决?用的deb9
    嚷嚷2018-04-18 14:51 回复
    • 这种情况说明本地密匙与服务器上面的密匙不一样。做这个教程时为了保险,先不要关闭密码登陆,确保密匙登陆配置有问题的时候还能通过密码方式登陆SSH。
      Toyo2018-04-19 17:33 回复
  4. 请问大大 我重启SSH之后提示 输入 /etc/init.d/ssh restart 后显示: Could not load host key: /etc/ssh/ssh_host_ecdsa_key [....] Restarting OpenBSD Secure Shell server: sshdCould not load host key: /etc/ssh/ssh_host_ecdsa_key . ok 怎么回事,如何解决?谢谢
    1232018-01-24 20:28 回复
  5. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Sep 22 15:12:34 2017 from 58.48.141.90 [email protected]:~# cat id_rsa cat: id_rsa: No such file or directory 我直接没办法找到文件诶 但是我之前的步骤没有出错
    Grant2017-09-22 23:24 回复
    • 如果你完全按照我的步骤执行了,那么你当前文件夹应该是:/root/.ssh/,id_rsa文件也位于这个文件夹内,你到 /root 文件夹内当然找不到文件。
      Toyo2017-09-23 12:12 回复
      • 嗯嗯 我去试一下
        Grant2017-09-27 23:00 回复
  6. SSHKey Installer 用这个会不会更简便?
    hoixding2017-09-21 08:28 回复
  7. 我配好root用户的了,然后又用su在普通用户家目录下生成了密匙对,这个私匙取回本地是不能同一个文件含有多个私钥的吧,反正我贴到后面的只能用来root登录,目前我是用ssh -i 指定文件来登录普通的用户
    embryo2017-08-24 14:15 回复
    • 不同用户的密匙要分开。
      Toyo2017-08-24 18:35 回复
  8. 难道不是取回公钥到客户端吗?
    1113332017-08-08 14:34 回复
    • 自己做了再说。
      Toyo2017-08-08 18:04 回复
  9. 逗比大佬写个一键脚本啊
    hehe2017-07-27 11:26 回复
  10. 在部分服务商还需要restorecon -R -v /root/.ssh来解决selinux问题
    Kirito2017-06-01 23:42 回复
  11. 看了最后多服务器用同一个秘钥,其实可以用ssh-copy-id -i这个命令,让操作更简单一些。 [[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.0.138 The authenticity of host '192.168.0.138 (192.168.0.138)' can't be established. RSA key fingerprint is 12:34:56:78:90:12:34:56:78:90:12:34:56:78:90:12. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.138' (RSA) to the list of known hosts. Address 192.168.0.138 maps to 192.168.0.138, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT! [email protected]'s password: Now try logging into the machine, with "ssh '192.168.0.138'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [[email protected] ~]# 然后登录138的机器,cat .ssh/authorized_keys,就是137机器上的秘钥了。
    huanghun2017-05-24 16:14 回复
  12. 新建一个用户,公钥放在这个用户下了。切回root安装完毕重启后登录新建用户时出现-bash: ulimit: open files: cannot modify limit: Operation not permitted,请问如何解决(root下已修改file-max:1024000和open files:512000)?
    ionervghuah2017-05-15 23:59 回复
    • 这个提示是权限问题。
      Toyo2017-05-16 01:08 回复
  13. gce我在/root/.SSH文件夹下放了公钥,重启了ssh服务,但是通过私钥连不上去。。。其他vps好像都可以
    cup2017-05-12 22:50 回复
    • 虽然我没用过,但是GCE的方式应该不一样。
      Toyo2017-05-12 23:25 回复
    • GCE的默认配置不允许root登录,要把/etc/ssh/sshd_config里面的AllowRootLogin改成yes
      lalala2017-10-21 10:36 回复
  14. 如果重装系统了,怎么改回密码登陆?
    zippo2017-05-11 07:56 回复
    • 重装系统后,系统默认就是密码登陆了(除了一些特殊的)。
      Toyo2017-05-11 13:03 回复
  15. 私钥取回,是3-11还是6-8?
    ionervghuah2017-05-10 17:27 回复
    • 什么?
      Toyo2017-05-10 17:54 回复
      • 复制密钥内容时的选取范围。我用记事本打开了一个密钥文件看了下,从begin那行至end那行,即3-11行。另,按照你的教程,用Xshell本地生成密钥对,然后按照『其他说明』上传公钥到VPS,是不是更安全?
        ionervghuah2017-05-10 21:30 回复
        • 选取范围是全部,也就是密匙文件内的所有内容。
          自己本地软件生成和服务器上面生成是一样的,觉得VPS不安全,不用VPS不就好了。
          Toyo2017-05-11 00:13 回复
  16. 赋予权限那个没设置发现也可以用啊?另外UsePAM yes中的yes需要改为no吗?
    ionervghuah2017-05-10 17:16 回复
    • 权限修改是为了避免其他用户修改/删除密匙文件,SSH配置参数不清楚就不要改。
      chmod 600 - 只有属主有读写权限。
      chmod 700 - 只有属主有读、写、执行权限。
      
      Toyo2017-05-10 17:52 回复
  17. 如果忘记密码呢 :lol:
    kurokitomoko2017-05-10 10:58 回复
    • 那就GG了。
      Toyo2017-05-10 13:38 回复
      • 所以新手我都用强密码,更改 ssh 默认端口。密钥太高端,玩不来…… :sad:
        he loves you2017-05-10 15:09 回复
      • 看到有人推荐这个密钥软体Kryptonite - Protect your SSH Private Key 作者是 KryptCo, Inc. https://appsto.re/cn/weWofb.i
        siam2017-05-20 05:39 回复