SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录)
SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动
SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录)
SSH 服务详解 (三)-- 使用 SSH 代理
SSH 服务详解 (四)-- 本地调用远程主机的命令
SSH 服务详解 (五)-- 远程文件拷贝
SSH 服务详解 (六)-- Windows SSH 主机
SSH 服务详解 (七)-- SSH 连接 Github
SSH服务详解(八)– vscode 通过 SSH 远程连接 linux 服务器
SSH 服务器运行在 ubuntu 18.04.1SSH 客户端在 Windows10
在我们平时使用 Linux 系统时候,通常使用的 Linux SSH 登录方式是用户名加密码的登录方式,今天来探讨另外的一种相对安全的登录方式——密钥登录
SSH 登录是用的 RSA 非对称加密的,所以我们在 SSH 登录的时候就可以使用 RSA 密钥登录,SSH 有专门创建 SSH 密钥的工具ssh-keygen。
服务器生成密钥对(ubuntu)
首先进入 Linux 系统的用户目录下的 .ssh 目录
cd ~/.ssh/
执行 ls 命令,此时目录为空
执行 ssh-keygen 命令创建密钥对
ssh-keygen -t rsa
执行密钥生成命令,基本上是一路回车既可以了,但是需要注意的是:执行命令的过程中是会输入密钥的密码,不需要密码直接回车就行。
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_rsa 和 id_rsa.pub,其中 id_rsa 是私钥(客户端使用),id_rsa.pub 这个是公钥(服务器使用)
客户端连接(windows)
上一小节中 Ubuntu 中生成了私钥和公钥,公钥客户端使用,就放在 ~/.ssh 目录下,私钥需要拷贝到客户端也就是 Windows 做连接使用,具体拷贝方法,可以使用 FTP 服务器进行传输,或者 cat 出来复制粘贴即可
私钥部分如下所示:
-----BEGIN RSA PRIVATE KEY-----
wB9Oh5oXOQvlJJAUXiAiudcGYUXulmQks7itfzHZzstMKDXaCEtpeQi8NxfcwQJT
WzNG/x2b//vLtXlLmfiTKggaoCDu/zVbmAsb4QSX4rG4HhhK3aWSP/+NcN5oqqWM
...
nl6z6M8rVdtgClmL8Gkj/yMCgYAs1yPo7wFKnVKxefgn0vxTNqD+6O5feJu817Pl
se1qj/vyzYebpFyQWyAy45RzKjVSEFiHfk0PS7teDqijpqrqscVJ
-----END RSA PRIVATE KEY-----
将 id_rsa 私钥拷贝到 Windows 下,执行命令:
ssh -i .\id_rsa tyustli@192.168.10.18
这里是进入私钥的目录下操作的,如果没在私钥的目录下,请写全目录,比如 C:\Users\Admin\Desktop\temp_dir\ssh
可以看到,使用私钥登录 SSH 还是提示需要输入密码,说明哪里配置还是有问题。
SSH 服务器配置(ubuntu)
cd ~/.ssh,执行 ls 看看目录下是否有 authorized_keys 文件没有的话则执行以下命令创建:
touch authorized_keys
将 id_rsa.pub 文件的内容输出到 authorized_keys
cat id_rsa.pub >> authorized_keys
这个时候再使用命令连接
ssh -i .\id_rsa tyustli@192.168.10.18
命令结果如下:
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-61-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security. Activate at:
https://ubuntu.com/livepatch
393 packages can be updated.
321 updates are security updates.
Your Hardware Enablement Stack (HWE) is supported until April 2023.
Last login: Wed Dec 29 05:02:30 2021 from 192.168.10.22
连接成功,无需再输入密码
退出远程连接命令
exit