skip to content
Logo 大狗子博客

debian系统设置ssh密钥登录

/ 4 min read

第一步:生成密钥

  • 使用 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连接,若密钥登录时不断提示输入密码,这时可以尝试:

  • 对于已生成的密钥,可以尝试转换成PEM格式私钥:ssh-keygen -p -m PEM 若需要新生成密钥,可尝试生成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 文件,进行如下设置(删除这两行前面的注释#):
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
  • 修改完上述几处,保存文件。之后重启ssh服务:
service sshd restart
  • 切换为root用户和密码登录后,下载 .ssh 目录下的私钥文件id_rsa,导入ssh客户端。

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

如果失败,最后一步在禁用密码登录:

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

  • 最后,重启 SSH 服务:

\[root@host .ssh]$ service sshd restart

至此,设置完成。