一. linux系统生成rsa公钥/私钥对
主要步骤如下:
-
打开终端。
-
输入命令:
ssh-keygen -t rsa
这将创建一个RSA类型的密钥对。你也可以选择其他类型的密钥,如
ed25519
或ecdsa
,只需将rsa
替换为相应的类型即可。 -
按回车键接受默认的文件位置(通常是
~/.ssh/id_rsa
)或输入一个新的文件位置。 -
当提示输入密码时,你可以选择输入一个密码以增加密钥的安全性,或者直接按回车键以不设置密码。如果设置了密码,每次使用密钥时都需要输入密码。(一般直接回车,要不每次输密码也很麻烦…)
-
再次输入密码以确认。
-
密钥生成后,你可以在
~/.ssh/
目录(或你在步骤3中指定的目录)下找到私钥(id_rsa
)和公钥(id_rsa.pub
)。 -
你可以使用
cat
命令查看公钥,例如:cat ~/.ssh/id_rsa.pub
这将显示你的公钥。你可以将这个公钥复制并粘贴到需要的地方。
-
如果在第4步中设置了密码,该怎么取消?
ssh-keygen -p
二. 如果配置免密?
两种操作方法:
1. 将客户端~/.ssh/id_rsa.pub文件里面的公钥手动复制到服务器上~/.ssh/authorized_keys中。
2. 使用 ssh-copy-id user@hostname 命令,将本地客户端的 SSH 公钥自动复制到远程服务器的 ~/.ssh/authorized_keys 文件中。执行此命令时,它首先会要求你输入远程服务器用户的密码。一旦验证通过,它就会自动将你的公钥追加到远程服务器用户的 ~/.ssh/authorized_keys 文件中。如果 ~/.ssh 目录或 authorized_keys 文件不存在,ssh-copy-id 也会自动创建它们。
三. “密钥对”概念
命令ssh-keygen -t rsa用于生成RSA类型的密钥对,这包括一个公钥和一个私钥。
公钥(Public Key):可以安全地分享给任何人的密钥。在SSH连接中,服务器存储客户端的公钥。当客户端尝试连接到服务器时,服务器使用存储的公钥来验证客户端的身份。公钥用于加密数据,但不能用于解密数据。只有对应的私钥才能解密通过公钥加密的数据。
私钥(Private Key):必须严格保密的密钥。私钥保留在用户端,不应该透露给任何人。私钥用于解密通过公钥加密的数据,或者在使用SSH连接服务器时,证明客户端的身份。私钥也可以用于对数据进行签名,以证明信息的发送者是你。
总结来说,公钥和私钥是一对,它们在加密通信和身份验证中扮演重要角色。公钥用于加密数据或验证签名,而私钥用于解密数据或生成签名。这种机制确保了数据传输的安全性和身份验证的可靠性。