第一步:生成密钥
-
使用 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至此,设置完成。