在我们平时使用Linux系统时候一般都是使用密码登录,但是一般的密码方式登录,容易有密码被暴力破解的问题。下面来实现另外一种更为安全和便捷的登录方式:密钥登录
1.生成公钥和私钥
由于私钥必须始终保密,且不能在网络上传输(相对而言),所以我们采取在本地生成公钥和私钥,再将公钥传输到服务器上用作加密,私钥用于本地用作解密。
使用下面的命令进行生成密钥对:
#-f后面为生成密钥路径 -C后面为备注内容
ssh-keygen -t rsa -b 4096 -f "$HOME/.ssh/tencent_cloud_key" -C "腾讯云"
一路回车即可,如下图所示:
pub后缀的为公钥,反之则为私钥
2.将公钥拷贝到远程服务器上去
输入下面的命令进行拷贝。
ssh-copy-id -i "$HOME/.ssh/tencent_cloud_key.pub" user@hostname
输入yes,然后输入服务器的密码
如果你没有ssh-copy-id命令或者其他原因,那么你可以手动进行拷贝,将tencent_cloud_key.pub(替换成你实际的公钥)里面的内容进行服务,然后拷贝到远程服务器的~/.ssh/authorized_keys文件里面去。
现在你可以通过密钥来指定登录远程服务器了,如下命令所示
ssh -i "$HOME/.ssh/tencent_cloud_key" user@hostname
3.关闭密码登录
编辑/etc/ssh/sshd_config,将下面三个参数的值改为如下所示
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
修改完成后运行下面的命令进行查看是否完成修改:
grep -P "^(PasswordAuthentication|ChallengeResponseAuthentication|PubkeyAuthentication)" /etc/ssh/sshd_config
如下图所示即完成了修改
输入下面的命令,重启ssh服务,令配置生效
systemctl restart sshd
评论区