一 基本原理
公钥认证需要一对密钥:公钥-私钥,将公匙放在服务器上你的宿主目录下,私钥保存在客户端。当登录服务器时,客户端软件将向服务器发出公钥认证请求,服务器先检查你的公匙是否合法,然后就用公钥加密一个随机数发送给客户端软件。客户端软件用私钥将这个加密的随机数解密后发送给服务器。因为公钥和私钥是成对使用的,公钥加密的数据只能用私钥解密,所以服务器就可以确认公钥认证的合法性了。
二 操作步骤
1. 生成公钥-私钥对
1)在服务器上生成公钥和私钥
#/usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):直接按回车
Enter same passphrase again:直接按回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
……
2)让服务器许可该证书
将公钥文件id_rsa.pub内容拷贝到文件/root/.ssh/authorized_keys中,如果没有就新建一个文本文件即可.
3)将私钥id_rsa下载到客户端
因为SSH-2类型的私钥是没有标准格式的, 而Winscp只支持Putty格式的私钥.
所以需要使用puttygen.exe将私钥文件进行转换,下载puttygen.exe
4)使用puttygen.exe转换私钥
运行puttygen.exe, 点击File -> Load private key, 打开id_rsa, 点击”Save private key”,保存私钥到文件id_rsa.ppk.
5)设置私钥密码
为了增强安全性,可以在”Key passphrase”和”Confirm passphrase”文本框中输入密码,使用私钥时必须输入该密码, 即使别人窃取到你的私钥如果不知道密码是不能使用密钥登录服务器的.
2. 使用公钥-私钥
运行Winscp, New一个Session,输入服务器IP地址,端口号,用户名和密钥的密码,将”Private key file”设置为id_rsa.ppk的位置.
三 结束语
如果没有设置私钥密码,就不需要输入密码就可以登录服务器了.
到此为止, 就可以更安全更灵活的连接linux服务器了。