Linux配置密钥登录
当涉及到需要远程连接到 Linux 服务器时,密码登录可能是最常用的方式。但是使用密码会增加许多不必要的风险和安全隐患,如密码泄露、爆破等。相比较而言,密钥登录可以提供更高的安全性和便利性。
本文将介绍如何在 Linux 操作系统上进行密钥登录配置,让你以更加方便快捷和安全的方式与远程服务器进行通信。无论你是作为开发者或者是管理员,在日常工作中,这都是一个非常实用的技能。
准备工作
- 制作密钥对
这里在window下E:\ssh2\id_rsa生成密钥对。
值得注意的是,一定要输入密码,不输入密码就是免密登录了
PS E:\ssh2> ssh-keygen.exe
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Lenovo/.ssh/id_rsa): E:\ssh2\id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in E:\ssh2\id_rsa.
Your public key has been saved in E:\ssh2\id_rsa.pub.
The key fingerprint is:
SHA256:AansztzDKJzKrTJSXugrSjWqChB93gzKWnRm5a0/J8o lenovo@DESKTOP-F1SSROA
The key's randomart image is:
+---[RSA 3072]----+
| o. |
| . o.o |
|. o.*.. o |
| + Bo+ . . |
|. +=. + S |
|.o= + . |
|oB * + + . |
|X B =.+. + |
|X*o+ E. |
+----[SHA256]-----+
2. 新增用户
我们先用root登录进去linux服务器,新增用户tt,不需要给tt添加密码,因为我们就是准备使用密钥登录
useradd -d "/home/tt" -m -s "/bin/bash" tt
解释:
-d “/home/tt”:就是指定/home/tt为主目录
-m就是如果/home/tt不存在就强制创建
-s就是指定shell版本
此时,在home目录下生成tt目录,这个目录表示tt用户的主目录
tt目录下生成.ssh/authorized_keys
mkdir /home/tt/.ssh
touch /home/tt/.ssh/authorized_keys
chmod 755 /home/tt/*
同时,将步骤一生成的id_rsa_pub里面的内容,复制到authorized_keys中
- 修改
sshd_config文件
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
- 重启sshd
systemctl restart sshd
测试密钥登录
在window刚刚生成id_rsa的目录中,执行:
ssh -i .\id_rsa tt@{ip}
这个时候可以看到,提示需要输入 id_rsa 中的密码,
输入密码后回车,即可进入服务器,同时我们看到,进入的是tt用户的主目录
后续的一些问题
- 从上面的配置,我们可以实现了密钥登录,那么我们是否还可以使用普通的账号密码登录呢?
答案是:可以
我们在Linux重新给tt用户,赋值上密码,使用指令:
passwd tt普通的登录指令:
ssh tt@10.3.10.255。此时需要输入tt的密码普通的登录指令:
ssh -i .\id_rsa tt@10.3.10.255。此时需要输入id_rsa的密码
- 既然可以使用
id_rsa登录,那么密码登录就没必要了吧?
我们可以关闭账号密码登录
修改
/etc/ssh/sshd_config文件:PasswordAuthentication禁用密码登录:
PasswordAuthentication no