ssh设置密钥登陆

起因

今天刷视频时候刷到某博主说他设备开启内网穿透后,发现被ssh爆破,顿时觉得安全这块还是稍微加强一些,于是准备把阿里云以及自己的几台配置了内网穿透的设备的ssh登陆从密码登陆换成密钥登陆。

设备

阿里云服务器:ubuntu
客户端1:windown10
客户端2:ubuntu

具体操作

1.在客户端生成密钥,并复制公钥内容

1.1 windows10

打开PowerShell输入:

ssh-keygen -t ed25519 -C "your_email@example.com"

然后一路回车,中途有生成Passphrase的询问,一律没理。
然后系统会告诉你,生成了私钥和公钥的路径,大致是:

Your identification has been saved in C:\Users\<用户名>\.ssh\id_ed25519
Your public key has been saved in C:\Users\<用户名>\.ssh\id_ed25519.pub

其中私钥是id_ed25519,公钥是id_ed25519.pub
然后输入:

type "C:\Users\<用户名>\.ssh\my custom_key.pub"

可以看到终端会打印出公钥的内容,类似于:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIjr5X7xl1eZwZkZ1aQ2oB1f8Y7addGvFtJ8WmZbY1b7T your_email@example.com

可以把它复制下来。

1.2 Ubuntu系统

打开终端,生成密钥:

ssh-keygen -t ed25519 -f ~/.ssh/new_key -C "new_email@example.com"

终端会输出

Generating public/private ed25519 key pair...
Your private key is saved in /home/user/.ssh/new_key
Your public key is in /home/user/.ssh/new_key.pub

接下来使用cat查看公钥的内容:

cat ~/.ssh/new_key.pub 
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIoehzNxifzcG2qEYgF66MWxmE6B5dEQRY1XGfHV6Rr8 new_email@example.com

然后也把公钥复制下来。

2.把公钥复制到服务器上面

首先,先登陆到服务器上,然后运行

echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys

把之前复制的公钥的内容复制在""里面并执行。
再修改权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

3.修改服务器ssh配置并重启服务使生效

sudo nano /etc/ssh/sshd_config

在配置文件里找到PasswordAuthenticationPubkeyAuthentication栏,修改

PasswordAuthentication no  
PubkeyAuthentication yes  

除此之外,还可以修改默认的22端口

Port 666

修改完成后,需要重启sshd服务

sudo systemctl restart sshd

4.登陆测试

使用任一客户端ssh登陆服务器。

ssh -p 666 用户名@服务器IP

直接登陆,成功。

posted @ 2025-07-08 20:02  科里布  阅读(18)  评论(0)    收藏  举报