关于 SSH 公私钥登录
SSH 公私钥登录方式是一种基于非对称加密机制的身份验证方法,用于登录 SSH 服务器,可以安全、高效地完成身份验证。
在使用 SSH 公私钥登录方式时,用户需要生成一对公私钥,并将公钥放置在 SSH 服务器上的授权文件中。私钥通常保存在用户本地的计算机上,用于 SSH 客户端与 SSH 服务器之间的身份验证。当用户登录 SSH 服务器时,SSH 客户端会使用私钥对密码进行加密,SSH 服务器基于保存在授权文件中的公钥进行解密和身份验证。
公私钥登录方式相对于常规的用户名和密码登录方式更加安全,因为私钥可以设置密码,并且用户私钥不需要在网络中传输密码。另外,使用公私钥登录方式可以免去输入密码的烦恼,也可以节省用户的时间。
在使用 SSH 公私钥登录方式时,可以按照以下步骤进行(以下操作均基于客户端 ssh 服务和服务端 sshd 服务已经配置好的情况):
生成公私钥对:
使用 ssh-keygen 命令生成公私钥对,例如:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按照提示输入文件名和密码等信息即可,不输入则默认使用默认值。在成功生成公私钥之后,会在当前用户的主目录下生成一个 .ssh
目录,其中包含了公钥和私钥文件。
这条命令的每一个字段的意思如下:
ssh-keygen
: 是一个用于生成 SSH 密钥对的命令行工具。-t rsa
: 指定生成 RSA 密钥对。RSA 是一种公钥加密算法,常用于 SSH 密钥对的生成。-b 4096
: 指定生成的 RSA 密钥长度为 4096 位。密钥长度越长,密钥的安全性越高,但生成和使用时所消耗的计算资源也更多。-C "your_email@example.com"
: 设置生成密钥时的注释信息,这里是设置邮件地址作为注释。注释信息通常用于标识该密钥属于哪个用户或用途。
总之,以上命令的作用是生成一个 RSA 密钥对,密钥长度为 4096 位,并为该密钥对设置一个注释信息。生成的密钥对包含一个私钥(id_rsa
)和一个公钥(id_rsa.pub
)。私钥通常用于客户端进行身份验证,而公钥则需要复制到服务器上进行配置以允许对应的私钥进行身份验证。
一般情况下,直接输入命令:
ssh-keygen -t rsa
然后一直敲回车,即全部采用默认设置即可。会在当前用户的主目录下生成一个 .ssh
目录,其中包含了公钥文件 id_rsa.pub
和私钥文件 id_rsa
。
将公钥添加到 SSH 服务器上:
在 SSH 服务器上,打开 ~/.ssh/authorized_keys
文件,将客户端的公钥复制到该文件中。
假如服务器的 sshd 服务已经配置好,会自动在用户的主工作目录 下生成一个 .ssh 文件夹,里面有一个 authorized_keys 文件,将上述公钥文件 id_rsa.pub
的内容复制到服务器的 ~/.ssh/authorized_keys
文件中即可。
启用 SSH 公私钥登录方式:
现在,可以使用 SSH 公私钥登录方式连接到 SSH 服务器了。在 SSH 客户端中输入以下命令:
ssh example.com
如果一切正常,你将不需要输入密码,即可登录到 SSH 服务器上。
需要注意,当使用 SSH 公私钥登录方式时,私钥文件需要妥善保管,不应该随意共享或分发。如果私钥被泄漏,可能导致未授权的用户登录到服务器上,造成安全威胁。