PublicKey认证基本原理

Public Key(非对称,asymmetric)认证使用一对相关联的Key Pair(一个公钥Public Key,一个私钥Private Key)来代替传统的密码(或我们常说的口令,Password)。顾名思义,PublicKey是用来公开的,可以将其放到SSH服务器自己的帐号中,而PrivateKey只能由自己保管,用来证明自己身份。
使用PublicKey加密过的数据只有用与之相对应的PrivateKey才能解密。这样在认证的过程中,PublicKey拥有者便可以通过PublicKey加密一些东西发送给对应的PrivateKey拥有者,如果在通信的双方都拥有对方的PublicKey(自己的PrivateKey只由自己保管),那么就可以通过这对Key Pair来安全地交换信息,从而实现相互认证。在使用中,我们把自己的PublicKey放在通过安全渠道放到服务器上,PrivateKey自己保管(用一个口令把PrivateKey加密后存放),而服务器的PublicKey一般会在第一次登录服务器的时候存放到本地客户端(严格地说来服务器的PublicKey也应该通过安全渠道放到本地客户端,以防止别人用他自己的PublicKey来欺骗登录)。

所以,为了更安全、方便的登录Linux服务器,可以取消密码登录,使用私钥公钥的方式来登录,更方便也更安全。

生成密钥

借助Xshell可以很方便的生成和管理私钥,点击工具菜单,选择新建用户密钥生成向导:

直接点击下一步

输入名称和密码,再点击下一步

将公钥保存起来备用,公钥需要上传到Linux服务器上。

上传公钥

先使用用户名和密码登录,然后输入命令

cd .ssh

将公钥保存到 .ssh 目录

上传成功如下图所示:

导入公钥

公钥上传好以后,需要导入公钥

cat RemotePPK.pub >> authorized_keys

导入成功以后,可以删除RemotePPK.pub文件了,当然不删也没什么问题。修改authorized_keys文件的权限为600,默认为600,为防止不是,重新设置一下:

rm RemotePPk.pub
chmod 600 *

使用公钥登录

打开用户身份验证,选择登录方法为 Public Key,并选择刚创建的密钥,输入密码即可。

取消密码登录

做了这么多,目的就是为了取消密码登录,在尝试使用公钥可以正常登录以后,就可以取消密码登录了,直接删除用户的密码即可

passwd -d root