SSH 密钥登录

SSH 默认采用密码登录,这种方法有很多缺点,简单的密码不安全,复杂的密码不容易记忆,每次手动输入也很麻烦。密钥登录是更好的解决方案。

密钥是什么

密钥(key)是一个非常大的数字,通过加密算法得到。对称加密只需要一个密钥,非对称加密需要两个密钥成对使用,分为公钥(public key)和私钥(private key)。

SSH 密钥登录采用的是非对称加密,每个用户通过自己的密钥登录。其中,私钥必须私密保存,不能泄漏;公钥则是公开的,可以对外发送。它们的关系是,公钥和私钥是一一对应的,每一个私钥都有且仅有一个对应的公钥,反之亦然。

如果数据使用公钥加密,那么只有使用对应的私钥才能解密,其他密钥都不行;反过来,如果使用私钥加密(这个过程一般称为“签名”),也只有使用对应的公钥解密。

公钥:上传到 你想要通信的另一方(如:云服务器、gitee)

私钥:通过私钥和另一方进行认证(另一方用你的公钥和你进行认证的私钥进行解密,如果无误,则登录成功)

密钥登录的过程

SSH 密钥登录分为以下的步骤。

预备步骤,客户端通过 ssh-keygen生成自己的公钥和私钥。

第一步,手动将客户端的公钥放入远程服务器的指定位置。

第二步,客户端向服务器发起 SSH 登录的请求。

第三步,服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。

第四步,客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。

第五步,服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。

ssh生成密钥对

windows生成密钥对

1、打开 cmd 或者 PowerShell 输入命令

ssh-keygen -t rsa

2、输入密钥保存路径,或者直接回车,保存到默认路径例如:C:\用户\用户名\.ssh\id_rsa(建议直接回车)

3、为你的 私钥 输入密码,或者直接回车则不设置密码(建议设置密码)

4、再次输入密码(重复上个步骤)

5、这个时候,您会得到一个公共密钥(id_rsa.pub)和一个私有密钥(id_rsa)。

linux生成密钥对

1、输入命令

ssh-keygen -t rsa

2、输入密钥保存路径,或者直接回车,保存到默认路径例如:/home/YourName/.ssh/id_rsa.(建议直接回车)

3、为你的 私钥 输入密码,或者直接回车则不设置密码(建议设置密码)

4、再次输入密码(重复上个步骤)

5、这个时候,您会得到一个公共密钥(id_rsa.pub)和一个私有密钥(id_rsa)。