使用PuTTY进行KEY认证

10:14:00 PM 0 Comments

首先下载PuTTY的for windows安装包,这个包自带了下面几个非常实用的软件:



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





文为转贴,上面红色部分为本人加注,加注原因是对主机的此rsa指纹不解。在linux.chinaunix.net、bbs.fedora-
zh.org等论坛发贴后,均未得到满意的答案。经多次google搜索,获知:此主机密钥为系统密钥对,是init.d/ssh
脚本自动生成的,保存在/etc/ssh/ 下。如果此密钥对出了问题,可用ssh-keygen -t rsa1 -f
/etc/ssh/ssh_host_key -N ''


ssh-keygen -t rsa -f
/etc/ssh/ssh_host_rsa_key -N ''


ssh-keygen -t dsa -f
/etc/ssh/ssh_host_dsa_key -N ''


等命令进行手工生成,并用chmod 600
/etc/ssh/ssh_host_*和chmod 644 /etc/ssh/ssh_host_*.pub)等命令设置权限,注意:-N
后面 是两个 单引号,表示密码串为空。切记系统密钥对不能设置口令保护。也可把 /etc/ssh/ssh_host*
删除,然后重新启动sshd服务,系统即可自动生成该指纹。 在
/etc/ssh/sshd_config配置文件中可查看该主机指纹的相关项,如下:


# HostKeys for protocol version 2


HostKey /etc/ssh/ssh_host_rsa_key


#HostKey /etc/ssh/ssh_host_dsa_key



而命令ssh-keygen -t rsa
生成的是执行ssh-keygen这个命令用户的 key pair (密钥对), 放在该用户的 ~/.ssh
下面。与系统自动生成的主机指纹是不同的。-——记于2009.4.1


[当主客机刚刚进行ssh通信时,主机要将通信的公钥传给客机,客机如何判断此公钥是可信的呢,确实来自于主机的呢?就是靠主机将通信的公钥传送给客机的同时,还要把自己的主机指纹传给客机,表明自己的身份可信、传送的公钥可信。记于同日。]




请把这个指纹记在纸上,随身携带,和远程主机连接的时候就拿出来对比一下(这么做主要
是为了防止连接被人劫持和指纹被伪造)。




如果上面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的保护,安全性不知道提升了多少倍!黑客想要破解真是难于上青天!


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.