下面以Windows环境下PuTTY为例讲解使用KEY认证的方法,Linux/UNIX下与此相似,服务器端环境为OpenBSD。
首先,从下面的网址下载PuTTY的安装包(for Windows):
http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe
下完后双击安装,再也不赘述。这个软件包自带了下面几个很是实用的软件:
PuTTYgen:生成KEY;
Pageant:管理KEY;
PuTTY:SSH客户端;
PSFTP:使用SSH上传/下载文件。
下面就来实例讲解用PuTTY的这几个软件对远程主机进行KEY认证和管理的方法。假设咱们要在192.168.0.132这个远程主机上使用young_king这个用户名进行KEY认证和登陆。
1.生成KEY
启动PuTTYgen,以下图:
在密钥长度栏输入想要的密钥长度,越大越安全。这里以最大的2048位为例,而后点“Generate”按钮,会开始生成KEY,生成过程当中须要在下面的空白部分移动鼠标来生成随机数。
KEY生成完毕后,你能够输入一些标识信息,以下图:
还能够在下面的passphrase框内输入“保护码”,注意要输入两遍。“保护码”也就是密码的意思,用来保密私钥的,必定要记住这个哦!
都输入完毕后,点击下面的“Save public key”按钮保存公钥,以下图所示:
而后点击“Save private key”按钮保存私钥,以下图:
这个私钥最好不要保存在电脑上,咱们把它拷贝到U盘上,随身带着,这就是咱们的“KEY盘”。
要养成每个月更换“保护码”的好习惯,更换“保护码”仍然要用到PuTTYgen这个软件,启动后点击“Load”,载入私钥,从新输入“保护码”,再确认一遍,而后点击“Save private key”保存便可!
2.启用KEY
上面生成了公钥和私钥,咱们须要把公钥上传到远程主机的用户目录中,就要用到PSFTP这个软件了。启动它,以下图:
输入命令:open 192.168.0.132
接下来,PSFTP会列出远程主机上的RSA指纹以供识别,以下图:
这个指纹能够在远程主机上输入下面的命令查看:
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
请把这个指纹记在纸上,随身携带,和远程主机链接的时候就拿出来对比一下(这么作主要是为了防止链接被人劫持和指纹被伪造)。
若是上面PSFTP显示的指纹和远程主机上的不一致,那么毫无疑问是伪造的了,直接回车断开链接。若是相符,你能够输入“y”来保存这个指纹到本地计算机上(不推荐),或输入“n”只是此次链接使用。
随后PSFTP会让你输入登陆用户名和密码,并自动进入该用户的根目录,以下图(以root为例):
如今咱们要把第一步生成的公钥上传到远程主机上(请把这个公钥复制到C:\Documents and Settings\Administrator目录先,若是你的Windows不是用Administrtor登陆的,就替换成你登陆用的用户名)。输入命令:put young_king,能够看到,公钥已经上传到/root目录了,见下图:
PuTTY 生成的KEY并不能直接使用,须要转换一下。用PuTTY登陆(此时上面修改的端口还没有启用,仍是默认的22端口),以root身份执行:
ssh-keygen -X -f /root/young_king > /home/young_king/.ssh/authorized_keys
这就把公钥成功导入到young_king的目录中了,就能够被young_king这个用户使用了!
导入成功后,要删除多余的公钥:
rm /root/young_king
下面介绍几个PSFTP经常使用的命令:
open xxx.xxx.xxx.xxx:打开远程主机(xxx.xxx.xxx.xxx为IP或域名);
put xxxxxxxx:向远程主机上传文件(该文件须要事先拷贝到C:\Documents and Settings\Administrator目录);
get xxxxxxxx:从远程主机下载文件(下载后保存在C:\Documents and Settings\Administrator目录);
cd xxxxxx:进入远程主机的相应目录;
exit:退出PSFTP(也能够点右上角的叉关闭,不过不推荐这样作)。
更多的命令能够参看PuTTY的帮助文件,这个帮助写得不错。
3.使用KEY登陆
咱们上面虽然修改了SSH的配置文件(/etc/ssh/sshd_config),但尚未启用。输入下面的命令启用新的SSH配置,以便咱们用KEY登陆:
kill -HUP `cat /var/run/sshd.pid`
PuTTY提供了一个KEY的管理程序,上面已经提到,是Pageant,咱们使用这个程序来进行 KEY登陆。
启动Pageant,它会自动缩小到任务栏的通知区域,右键单击,选择“Add key”,会弹出个对话框让咱们选择。插入上面制做好的“KEY盘”,并选择保存的私钥,会弹出个对话框让咱们输入“保护码”,以下图:
若是安装PuTTY时选择了让Pageant关联.ppk文件,则双击私钥能够自动启动Pageant。
输入在生成KEY时输入的“保护码”,私钥就被导入到Pageant中了。再右键单击任务栏通知区的Pageant图标,选择第一项“New session”,Pageant会自动启动PuTTY,等待输入远程主机的相关信息,以下图:
输入IP(或域名)和端口号,点击最下面的“Open”按钮,PuTTY就会登陆远程主机了。和PSFTP相似,会弹出个对话框让你确认远程主机的RSA指纹,以下图。同理,指纹不一样就表示链接被劫持或指纹被伪造,点“取消”断开链接;指纹相同就点“否”,不保存主机公钥到本地计算机。
随后会让你输入用户名,输入“young_king”,看看,自动就登陆上去了!
前面更改SSH配置的时候,已经禁用了root远程登陆和使用密码登陆,只能使用KEY才能登陆进系统。想要维护系统的时候,就用这个KEY登陆,再su成 root。并且,须要上传/下载文件的时候,就用PSFTP,全部的操做都在SSH链接下进行,还有KEY的保护,安全性不知道提高了多少倍!黑客想要破解真是难于上青天!