PHP笔记网

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2023-09-18 11:01:30  修改时间:2024-10-31 05:24:38  分类:IT运维/网络管理  编辑

当前环境: 

  • SSH 服务器运行在:CentOS 7
  • SSH 客户端在:Windows 10

 在我们平时使用 Linux 系统时候,通常使用的 Linux SSH 登录方式是用户名加密码的登录方式,今天来探讨另外的一种相对安全的登录方式——密钥登录

SSH 登录是用的 RSA 非对称加密的,所以我们在 SSH 登录的时候就可以使用 RSA 密钥登录,SSH 有专门创建 SSH 密钥的工具ssh-keygen

服务器生成密钥对(CentOS 7)

首先进入 Linux 系统的用户目录下的 .ssh 目录

cd ~/.ssh/

执行 ls 命令,此时目录为空

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

ssh-keygen -t rsa -C "albert8642@163.com"

执行密钥生成命令,基本上是一路回车既可以了,但是需要注意的是:执行命令的过程中是会输入密钥的密码,不需要密码直接回车就行。

tyustli@tyustli-virtual-machine:~/.ssh$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tyustli/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/tyustli/.ssh/id_rsa.
Your public key has been saved in /home/tyustli/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:S3j7n/xkWNDWr34lh7g03VyL8h7QFFHgVmGN4PZwmQk tyustli@tyustli-virtual-machine
The key's randomart image is:
+---[RSA 2048]----+
|            E=+*o|
|           ..o==.|
|            =+B .|
|       .   .+*  o|
|      . S  . ++++|
|       o o .=++o=|
|        o  .+++o.|
|         . ..*. .|
|          ..=oo. |
+----[SHA256]-----+
tyustli@tyustli-virtual-machine:~/.ssh$ 

命令生成之后使用 ls 命令查看一下

id_rsa  id_rsa.pub

密钥生成后会在当前目录下多出两个文件,id_rsaid_rsa.pub,其中 id_rsa 是私钥(客户端使用),id_rsa.pub 这个是公钥(服务器使用)

客户端连接(Windows 10)

上面生成了私钥和公钥,公钥服务器端使用,就放在 ~/.ssh 目录下,私钥需要拷贝到客户端也就是 Windows 10 做连接使用,具体拷贝方法,可以使用 FTP 服务器进行传输,或者 cat 出来复制粘贴即可

私钥部分如下所示:

-----BEGIN RSA PRIVATE KEY-----
wB9Oh5oXOQvlJJAUXiAiudcGYUXulmQks7itfzHZzstMKDXaCEtpeQi8NxfcwQJT
WzNG/x2b//vLtXlLmfiTKggaoCDu/zVbmAsb4QSX4rG4HhhK3aWSP/+NcN5oqqWM
...
nl6z6M8rVdtgClmL8Gkj/yMCgYAs1yPo7wFKnVKxefgn0vxTNqD+6O5feJu817Pl
se1qj/vyzYebpFyQWyAy45RzKjVSEFiHfk0PS7teDqijpqrqscVJ
-----END RSA PRIVATE KEY-----

将 id_rsa 私钥拷贝到 Windows 10 下,执行登录命令:

ssh -i .\id_rsa  tyustli@192.168.10.18

这里是进入私钥的目录下操作的,如果没在私钥的目录下,请写全目录,比如

ssh -i d:\123\id_rsa  tyustli@192.168.10.18

可以看到,使用私钥登录 SSH 还是提示需要输入密码,说明哪里配置还是有问题。

SSH 服务器配置(CentOS 7)

cd ~/.ssh,执行 ls 看看目录下是否有 authorized_keys 文件没有的话则执行以下命令创建:

touch authorized_keys

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

cat ~/.ssh/id_rsa.pub >> authorized_keys 

这个时候 Windows 10 下再使用命令连接

ssh -i .\id_rsa  tyustli@192.168.10.18

命令结果如下:

Last login: Tue Nov 28 15:50:34 2023 from 180.91.153.58

Welcome to Alibaba Cloud Elastic Compute Service !

[root@izwz9cgjskwmn2jzmiwaxdz ~]#

连接成功,无需再输入密码

退出远程连接命令

exit

 

 

参考:https://blog.csdn.net/tyustli/article/details/122222605