一、什么是密钥登录
在Linux系统中,我们通常采用的方式是使用用户名和密码进行登录。但是随着计算机技术的发展,一些黑客利用各种手段获取用户的账号密码,进而对服务器进行入侵,造成服务器数据泄露等问题。因此,为了更加安全地进行服务器登录,我们可以采用密钥登录的方式,即使用一对公私密钥进行验证,来确保登录的安全性。
二、生成密钥对
在进行密钥登录前,我们需要先生成密钥对。使用ssh-keygen命令可以生成一对公共和私人密钥。
$ ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -q -N ""
其中,-t参数指定生成密钥的类型,这里我们选择rsa;-b指定密钥长度,一般建议选择2048位;-f参数指定生成的密钥文件存放路径,这里我们可以将其存放在用户目录下的.ssh文件夹中;-q参数表示以安静模式生成密钥,不需要输入任何提示符;-N参数指定密钥的密码,这里为空,也就是不设置密码。
执行命令后,会在用户目录下的.ssh文件夹中生成id_rsa和id_rsa.pub两个文件,其中id_rsa是私钥文件,该文件只有当前用户具有读写权限;而id_rsa.pub是公钥文件,该文件可以被复制到其他机器的.ssh/authorized_keys文件中,以实现密钥登录。
三、将公钥添加到远程主机中
在本地机器生成公钥之后,接下来需要将该公钥添加到目标主机的authorized_keys文件中,以实现密钥登录。如果目标主机上原来没有.ssh目录,需要先创建:
$ ssh user@remote-server "mkdir -p ~/.ssh"
创建完成后,将本地生成的公钥追加到authorized_keys文件中:
$ cat ~/.ssh/id_rsa.pub | ssh user@remote-server 'cat >> ~/.ssh/authorized_keys'
这里使用了一个管道符和ssh命令来将公钥内容发送到远程主机,并将其追加到authorized_keys文件中。在执行以上命令时,需要输入目标机器的登录密码。
四、使用密钥进行登录
完成以上步骤后,我们就可以使用密钥登录到目标主机了。在登录时,需要指定私钥的路径:
$ ssh -i ~/.ssh/id_rsa user@remote-server
其中,-i参数指定私钥的路径。执行命令后,程序会自动读取私钥,并与远程主机进行验证,如果验证通过,则可以顺利登录主机。此时,不需要再输入密码了,登录过程更加方便快捷。
五、密钥登录的优缺点
相比传统的密码登录方式,密钥登录具有以下优点:
- 安全性高。密钥对中的私钥文件存储在本地机器中,只有持有正确密钥的用户才能登录到远程机器,更加防止黑客入侵。
- 方便快捷。使用密钥登录,无需输入密码,登录过程更加简便快捷。
当然,密钥登录也有一定的缺点,比如在多设备使用时,需要将私钥文件保存在每个设备中,管理起来较为麻烦。此外,在一些服务器上可能会禁止使用密钥登录,需要特别注意。
六、小结
通过本文的介绍,我们了解了什么是密钥登录,以及如何生成密钥对、将公钥追加到目标主机中,并使用密钥登录到远程主机。在实际工作中,我们可以灵活运用密钥登录和密码登录两种方式,提升SSH登录的安全性和便捷性。