当前环境:
- 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_rsa
和 id_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