debian系统设置ssh密钥登录

猿代码 · 2024-04-15 · 533 人浏览

只要你的机器暴露在公网之中,每天都会受到来自外界源源不断的攻击。

所以,在拿到一个新机之后,修改ssh端口、把ssh的密码登录改成密钥登录才是比较稳妥的。

笔者在此记录一下debian服务器设置ssh密钥登录的步骤,以备将来使用。

第一步:生成密钥

使用 ssh-keygen 或者 ssh-keygen -t rsa 命令生成密钥。执行完命令后,一路回车即可。

ssh-keygen 命令会在默认的/root用户目录下生成两个文本文件,一个带 .pub 结尾,内容只有一行,这是公钥;另一个不带 .pub 结尾,内容有很多行,这是私钥。公钥和私钥是绝对唯一的一对,其中公钥内容是可以公开的,而私钥内容则需要小心保管。

在这里记录一下ssh-keygen命令可以携带的几个参数的含义:

  • -t rsa: 参数用于指定密钥类型,它告诉 ssh-keygen 生成何种类型的密钥。常见的类型包括 RSA、DSA、ECDSA 和 Ed25519。
  • -b 4096:表示密钥的长度,建议 4096 起。
  • -C 张三:在公钥末尾加上注释,表名这是谁的公钥。
  • -N password:设置私钥密码。如果想在生成过程中输入密码,可以不用这个参数。
  • -f [file]: 设置生成的密钥保存文件名,生成成功后会得到 [file] 和 [file].pub 两个文件。

此外,如果使用了Finalshell软件进行ssh连接,若密钥登录时不断提示输入密码,这时可以尝试:

  1. 对于已生成的密钥,可以尝试转换成PEM格式私钥:ssh-keygen -p -m PEM
  2. 若需要新生成密钥,可尝试生成PEM格式,增加 -m PEM参数。例如 ssh-keygen -m PEM -t rsa

第二步:在服务器上安装公钥

[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys

这个命令是将公钥添加到服务器的 .authorized_key 文件中,如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh

第三步:设置SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,进行如下设置(删除这两行前面的注释#):

AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
PubkeyAuthentication yes

笔者在修改的时候,由于粗心编辑了同路径下的ssh_config文件。
修改的结果肯定是不成功的,之后浪费了好久才发现是改错了文件。
所以在此稍微提醒一下,注意是修改sshd_config文件,而不是ssh_config文件!

确保允许 root 用户通过 SSH 登录:

PermitRootLogin yes

修改完上述两处,保存文件。

之后重启ssh服务:

service sshd restart

切换为root用户和密码登录后,下载 .ssh 目录下的私钥文件id_rsa,导入ssh客户端。

确保root用户能够通过密钥登录。

当你完成全部设置,并以密钥方式登录成功后,再将配置文件修改为禁用密码登录:

PasswordAuthentication no

请注意,这里最好在确认密钥可以成功登录之后,再关闭密码登录。
关闭太早的话,中间稍微出点错,很可能会无法登录系统哦!

最后,重启 SSH 服务:

[root@host .ssh]$ service sshd restart

至此,设置完成。

写在最后

请千万注意:你的私钥非常重要,请妥善保管。它只是一个文本文件,所以可以保存到你的在线笔记当中。注意不要公开你的私钥文件内容,不要让别人把你的私钥拷贝走了。

万一你的私钥被拷贝走了

最后一道防线就是你创建私钥时设置的、用于打开私钥的密码。盗取你私钥的人没有密码就无法打开私钥。但是通过暴力破解,依旧是有可能在一定时间内猜出你的密码来。

因此万一你的私钥被暴露出去了,最安全的应对方式是重新生成公钥/私钥对(当然不能继续用原来的私钥密码!),然后去服务器上用新的公钥替换你现有的公钥!

参考文章

  • https://www.runoob.com/w3cnote/set-ssh-login-key.html
  • https://pa.ci/153.html
  • https://zhuanlan.zhihu.com/p/568332488
  • https://www.168itw.com/web-server/debian-ssh-keygen/

服务器 debian ssh 密钥
京ICP备2023019113号-1 ◎ Theme by Jasmine