密钥是什么
密钥(key)是一个非常大的数字,通过加密算法得到。对称加密只需要一个密钥,非对称加密需要两个密钥成对使用,分为公钥(public key)和私钥(private key)。
SSH 密钥登录采用的是非对称加密,每个用户通过自己的密钥登录。其中,私钥必须私密保存,不能泄漏;公钥则是公开的,可以对外发送。它们的关系是,公钥和私钥是一一对应的,每一个私钥都有且仅有一个对应的公钥,反之亦然。
如果数据使用公钥加密,那么只有使用对应的私钥才能解密,其他密钥都不行;反过来,如果使用私钥加密(这个过程一般称为“签名”),也只有使用对应的公钥解密。
密钥登录的过程
SSH 密钥登录分为以下的步骤。
预备步骤,客户端通过ssh-keygen
生成自己的公钥和私钥。
第一步,手动将客户端的公钥放入远程服务器的指定位置。
第二步,客户端向服务器发起 SSH 登录的请求。
第三步,服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。
第四步,客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。
第五步,服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。
ssh-keygen命令
OpenSSH 提供了一个工具程序ssh-keygen
命令,用来生成密钥。
执行ssh-keygen命令以后,会出现第一个问题,询问密钥保存的文件名,默认是~/.ssh/id_dsa文件,这个是私钥的文件名,对应的公钥文件~/.ssh/id_dsa.pub是自动生成的。用户的密钥一般都放在主目录的.ssh目录里面。
ssh开启免密登录
编辑 sshd_config 配置文件
生成公钥和私钥
方法一:在服务器上生成密钥
生成公钥和私钥,把公钥上传到.ssh 目录authorized_keys文件中。
下载.ssh/id_rsa文件,打开xshell,点击工具--用户密钥管理者--导入,将id_rsa文件导入,xshell用户密钥
配置xshell使用刚导入的密钥即可进行免密登录。
方法二:在xshell上生成密钥
点击 Xshell 的工具-新建用户密钥生成向导,开始生成密钥。
弹出页面的密钥类型和密钥长度默认不要修改,点击下一步,看到程序生成 2048 位 RSA 密钥,点击下一步,输入密钥名称和登录密码。密钥名称随便起一个,密码是用来和密钥一起双重加密的,哪怕密钥被盗了,没有密码还是无法 SSH 登陆到服务器上。
点击下一步,把密钥另存为文件保存到本地电脑。这个是公钥。
另外在 Xshell 的工具>>用户密钥管理者里面能够看到对应的私钥,私钥最好另存到本地电脑和邮箱中,这点很重要。
上传公钥到服务器.ssh目录authorized_keys。
设置权限
配置xshell使用刚导入的密钥即可进行免密登录。
评论区