手把手图文并茂教你创建并使用私钥privateKey登录 SSH 服务器

为什么要使用privateKey登录 SSH 服务器?

我们平时登录Linux服务器的时候,经常是使用用户名和密码进行登录,但是如果我们要使用它进行代码连接或者其他操作的情况下,我们需要一种更为安全的方式进行登录,就需要privateKey登录 SSH 服务器

SSH 登录简介

  • RSA 非对称加密
  • 在 SSH 登录时可以使用 RSA 密钥登录
  • 使用工具ssh-keygen可以创建 SSH 密钥

如何创建?

服务器生成密钥对(ubuntu)

进入 Linux 系统目录下 .ssh 目录

cd ~/.ssh/

此时看到报错-bash: cd: /root/.ssh/: 没有那个文件或目录

[root@localhost ~]# cd ~/.ssh/
-bash: cd: /root/.ssh/: 没有那个文件或目录

解决报错

执行

ssh localhost

报错解决,大功告成~

执行 ls 命令,我们可以看到此时目录

执行 ssh-keygen 创建密钥对

执行密钥生成命令,回车~
执行过程中可以选择是否输入秘钥密码,也可以选择不需要密码哦~直接回车

ssh-keygen -t rsa

命令生成之后,查看一下

id_rsa  id_rsa.pub  known_hosts

SSH 服务器配置(ubuntu)

我们发现目录下没有 authorized_keys,我们创建一个

touch authorized_keys

将 id_rsa.pub 文件的内容输出到 authorized_keys

cat id_rsa.pub >> authorized_keys 

远程访问测试

以windows电脑为例,我们访问一下我们是否可以通过privateKey登录 SSH 服务器

将 id_rsa 私钥拷贝到 Windows电脑上面,然后进入私钥所在目录,执行命令:

ssh -i .\id_rsa  [email protected]

再次发现异常,The authenticity of host ‘XXX’ can’t be established.

PS C:\Users\Administrator\Desktop\fsdownload> ssh -i .\id_rsa  [email protected]
The authenticity of host '192.168.33.129 (192.168.33.129)' can't be established.
ECDSA key fingerprint is SHA256:dw6kUF1VDfJ9WXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.33.129' (ECDSA) to the list of known hosts.

分析

原因在于每次远程登录Linux的时候,Linux都要检查一下,当前访问的计算机公钥是不是在~/.ssh/know_hosts中,这个文件时OpenSSH记录的。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。SSH对主机的public_key的检查等级是根据StrictHostKeyChecking变量来配置的。默认情况下,StrictHostKeyChecking=ask。简单所下它的三种配置值:

  • 1.StrictHostKeyChecking=no 最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网测试时建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中(默认是known_hosts),并且给出一个警告。
  • 2.StrictHostKeyChecking=ask 默认的级别,就是出现刚才的提示了。如果连接和key不匹配,给出提示,并拒绝登录。
  • 3.StrictHostKeyChecking=yes 最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。

解决

我们用下面的命令登录

ssh -i .\id_rsa -o StrictHostKeyChecking=no [email protected]

还有一种彻底去掉SSH主机验证的方法,就是修改/etc/ssh/ssh_config配置文件,在ssh_config配置文件中添加:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

大功告成~

今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

猜你喜欢

转载自blog.csdn.net/tangdou369098655/article/details/128894931