Linux创建SSH密钥、设置密钥登录、密钥登录原理

  • Post author:
  • Post category:linux


Linux有2种登录方式:

  • 使用用户名加密码的登录方式;
  • 密钥登录;

密钥登录:

  • SSH登录是用的RSA非对称加密的,SSH密钥登录的时候可使用RSA密钥登录,SSH有专门创建SSH密钥的工具

    ssh-keygen

一般的密码方式登录,容易有密码被暴力破解的问题。

  • 将 SSH 的端口设置为默认的 22 以外的端口;
  • 禁用 root账户登录。
  • 通过密钥方式登录。

SSH密钥登录原理:

  • 利用密钥生成器制作一对密钥(一只公钥、一只私钥)。

  • 将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。

  • 没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。- – 如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。

  • cd到Linux用户目录下的.ssh目录下,root用户是/root/.ssh,普通用户是/home/用户名/.ssh; 执行:

    cd /home/普通用户名/.ssh

    或者

    cd /root/.ssh

  • 执行ssh-keygen命令创建密钥对:

    ssh-keygen -t rsa


注意:

执行密钥生成命令,基本上是一路回车既可以了,但是需要注意的是:执行命令的过程中是会提示。输入密钥的密码的(如下图,输入两次相同的,即是又一次确认密码),不需要密码直接回车就行。

在这里插入图片描述

Enter file in which to save the key (/root/.ssh/id_rsa):

#输入key的保存位置,直接回车即可。

Enter passphrase (empty for no passphrase):

#私钥口令,不需要的话直接回车。

  • 密钥生成后会在当前目录下多出两个文件,id_rsa、id_rsa.pub;
  • id_rsa:私钥(一般不外泄);
  • id_rsa.pub:公钥;

    在这里插入图片描述

    普通用户则还需要注意权限问题:

    chmod 700 /home/普通用户/.ssh

    chmod 600 /home/普通用户/.ssh/新建或者已存在用来保存公钥的文件

把公钥拷贝到需要登录的远程服务器上,这里可以使用ssh-copy-id自动完成。例如:

for i in {1..3}; do ssh-copy-id ceph$i; done

设置 SSH,打开密钥登录功能,以root用户来操作,


vi /etc/ssh/sshd_config

RSAAuthentication yes 
PubkeyAuthentication yes 
PermitRootLogin yes ##root 用户能否通过 SSH

当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

PasswordAuthentication no

在这里插入图片描述

重启 SSH 服务:


systemctl restart sshd




service sshd restart



版权声明:本文为qq_37432174原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。