SSH 密钥登录

最后更新于 2024-12-07 240 次阅读


SSH 密钥登录

1.前言

之前ssh一直用的是密码登录,虽然不是弱密码,不至于被别人爆破,但是一直被扫,虽然安装了Fail2Ban,但是治标不治本,爆破日志每天几千条,很烦.在网上查找资料后,决定采用SSH 密钥登录.

2.密钥是什么

SSH 密钥登录采用的是非对称加密,每个用户通过自己的密钥登录。其中,私钥必须私密保存,不能泄漏;公钥则是公开的,可以对外发送。它们的关系是,公钥和私钥是一一对应的,每一个私钥都有且仅有一个对应的公钥,反之亦然

3.准备工具

  1. Termius 非常好用的SSH工具

4.生成密钥

  • 登录服务器.进入 ssh目录.如果提示目录不存在,输入 ssh localhost 手动输入密码登录下即可

.ssh 是记录密码信息的文件夹,如果没有登录过root的话,就没有 .ssh 文件夹,因此登录 localhost ,并输入密码就会生成了

  • 生成密钥.命令 ssh-keygen,通常做法
$ ssh-keygen -t rsa

执行后 提示 Enter file in which to save the key (/root/.ssh/id_rsa):提示保存密钥的文件,默认即可.按回车

如果已经有重复的密钥文件,会提示是否重写? 选则 y

image-20241204151003238

Enter passphrase (empty for no passphrase): 提示输入密码锁,留空就行按回车.

密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。

Enter same passphrase again提示再输入一遍密码锁.继续回车

出现这样的提示,说明生成RSA公钥私钥已经成功.

image-20241204151247222

  • ls查看是否存在 id_rsa 和 id_rsa.pub,id_rsa 为私钥,id_rsa.pub 为公钥

5.服务器配置

  • 输入以下命令cat id_rsa.pub >> authorized_keys将公钥文件追加到authorized_keys文件中

image-20241204152024831

  • 修改SHH配置使用密钥登录

    vi /etc/ssh/sshd_config

    # 启动ssh密钥登录
    RSAAuthentication yes
    PubkeyAuthentication yes

    image-20241204152615747

    修改完成后,保存.重启SSH

    sudo /etc/init.d/ssh restart

  • 最后将公钥和私钥文件下载到客户机保存即可

6.Termius设置

开始添加 ssh key

image-20241204153818783

将私钥文件拖进去即可.公钥可以不填写,然后保存

image-20241204154111766

  • 然后在Hosts里把密码删除掉,添加key.选择刚才的key

image-20241204154245146image-20241204154305538

最后点击Connect开始连接,成功连接.

image-20241204154509101

  • 密钥登陆成功后关闭密码登录
# 允许密码登录(禁用改为no)
PasswordAuthentication yes

image-20241204154707500

保存重启SSHsudo /etc/init.d/ssh restart.然后关闭连接.再尝试用密码登录.

提示登录错误,这样就可以保证只能用密钥登录了.

image-20241204155830906

7.其他

由于我用的是Termius免费版,不支持多设备同步.所以我用1Password进行保存IP和私钥信息.也是可以的

image-20241204160429580