《信息安全综合实践》实验报告实验名称:SSH实验姓名:李建辉学号: 5080369090 班级: F803604 实验日期:2010.12.22一、实验目的1.加深对密码算法使用的理解2.进一步熟悉linux系统3.了解和体验windows及linux环境下SSH的应用二、实验环境1.SSH服务器:Ubuntu10.04版(虚拟机),装有openSSH, wireshark,xinetd,telnetd,采用桥接联网2.SSH客户端:winXP SP3 装有 putty 0.60(windows下SSH登录)Ubuntu10.04 版,装有(虚拟机)openSSH, wireshark, xinetd,telnetd (Linux下SSH登录)采用桥接联网四、主要实验步骤及说明0.实验准备(1)网络设置根据要求windows XP和虚拟机的网络设置如下:XPIp设为192.168.1.90UbuntuIp设为192.168.1.190(2)帐号设置:我自己设置了一个帐号myyh,另一个使用的是原有帐号super (3)SSH服务状况SSH已启动,进程号是6641.Windows下登录SSH服务器1.1口令登录在windowsXP中打开putty工具,在session中填入虚拟机的ip以及默认端口22,点击open。
如下图:以super帐户远程登录成功1.2密钥登录1)在服务端生成密钥对生成密钥对mybabyyh_rsa查看刚才保存的公钥及私钥文件从上图中可以看出私钥为mybabyyh_rsa,公钥为mybabyyh_rsa.pub,我选择的路径是/home/super/.ssh/目录。
私钥如下:公钥如下:2)将公钥信息写入当前用户目录下的/.ssh/authorized_keys文件中使用cat命令把mybabyyh_rsa.pub公钥文件信息写入authorized_keys中命令:cat mybabyh_rsa.pub > authorized_keys如下图:3)将服务器端刚才产生的私钥存入本地使用putty工具集中的PSFTP工具从ubuntu中拿出私钥文件,命令如下:Open 192.168.1.190 //打开和服务器的连接,并登录之Lcd d: //设置了一个新的本地目录 xp的桌面cd /home/super/.ssh/ //进入存放私钥文件的目录get mybabyyh_rsa //拿私钥文件如下图:4)在客户端windows系统中查找刚才取得的私钥文件由于刚才自己设置了目录在Xp的桌面上,所以在桌面上。
如下图:mybabyyh_rsa 在左上角5)私钥格式转换使用putty工具集中的puttygen工具把在服务器里生成的私钥转换为putty自己的格式的私钥.ppk。
打开puttygen,点击load,选择mybabyyh私钥,如下图:载入成功根据提示保存为私钥,如下图:7) 以密钥用户身份登录SSH服务器打开putty,点击Connection-SSH-Auth 加载刚才保存的私钥(.ppk),点击Session,填写SSH 服务器地址192.168.190,以密钥用户身份登录,如下图:私钥登录成功如果加载密钥后再去登录其他账户,则会出现server refuse our key,我生成的是我把公钥放在了super帐户目录下,这里用myyh帐户登录,如下图:2.linux下登录他人的SSH服务器远端服务器地址:192.168.1.199 username:zzj1 password:1233212.1口令登录口令登录zzj1,如下图:口令成功登录他人的SSH服务器2.2 密钥登录1) 在本地客户端生成公私钥对依然使用刚才生成的密钥对,mybabyyh 和mybabyyh.pub2) 将公钥存放到远端服务器密钥登录用户的相应目录下把自己的公钥mybabyyh.pub传给服务器,使用以下命令ssh-copy-id –i /home/myyh/.ssh/mybabyyh.pub zzj1@192.168.1.199,如下图:公钥传送成功存放位置:使用上面的命令,会把自己的公钥写到服务器的$./.ssh/authoirized_keys文件中,作为验证公钥。
内容如下:经过对比,和自己机器上的公钥mybabyyh.pub完全一样。
3) 以远端密钥登录用户身份登录SSH服务器使用私钥登录他人服务器成功3.SSH远程登录后进行文件操作1)远程登录SSH服务器2)创建ISexp文件夹和文件创建文件夹和文件,并写入要求的内容3)把新创建文件复制到客户端。
在windowsXP环境下,我使用的是psftp工具拿到该文件,命令如下:打开连接后,get就可以了,如下图:在ubuntu环境下,由于虚拟机没有安装putty-tools包,所以没有psftp 工具,所以我使用的是ssh包带的sftp工具,命令如下:sftp zzj1@192.168.1.199 //使用sftp连接服务器lcd /home/myyh //指定本地目录get 5080369090 //拿到所要的文件具体如下图:4.SSH协议分析1)启动wiresharkSudo wireshark2) 开始抓包,进行ssh连接,包如下图:分析过程:a.首先是TCP三次握手b.紧接着是一个SShv2的包,server向client说明自己的SSH版本信息和系统版本信息,client发TCP响应收到c.Client发一个SSHv2包,向server说明client的SSH版本信息和系统版本信息,server发TCP包响应收到d.Client发Key Exchange init包,server响应收到e.Server发key Exchange init包f.Client向server发DH GEX请求g.Server应答DH keyExchange请求h.Client发送DHkey初始化请求i.Server应答DHkey初始化请求DH密钥交换验证过程结束,安全的连接建立j.后面是加密数据的传输3)重新开始抓包,进行telnet连接,包如下图:a.首先还是TCP的三次握手b.Client向server发送telnet数据,server响应之c.Server向client端发送telnet环境,client响应d.Client向server端发送telnet环境,server响应e.Server向client端发送系统环境,client响应f.Server向client发送登录框,请求输入用户名g.Client每次一个字符向server发送命令,server收到正确的字符后响应client,这些数据交换都是以明文形式的,直至遇到回车符h.Server请求输入密码i.Client依然每次发送一个字符把密码以明文的形式传送过去,知道回车j.密码验证成功后,server向client发送登录成功信息k.以后的命令都是以明文方式一个字符一个字符传送。
对比分析:通过比较SSH远程登录和telnet远程登录,明显可以看到,SSH比telnet 安全,telnet的数据传输都是明文,没有经过加密处理,登录名和密码以及传输的数据很容易被人窃听,很不安全。
而SSH登录的话,是一个密钥验证的过程,而且以后的数据传输都是经过加密处理的,使得客户端和服务器之间的通信比较安全。
五、实验总结和分析1.实验结果与预期不同时,原因分析本次实验做的比较顺利,都成功完成了,因为在实验前,就已经使用过ssh,只是ssh-copy-id –i这个命令第一次使用,在实验前,专门查看了一番。
2.实验中遇到的问题和解决方法问题:在做把自己在服务器上那个建的文件拿到客户端的时候,在windows中使用psftp没有问题,但是在ubuntu中没有putty-tools工具集,所以不能使用psftp工具。
解决方法:使用ssh中自带的sftp工具,拿到了自己建的文件。
3.实验中的难点分析本次实验的前半部分就是根据步骤一步一步做就行了,只是最后在ubuntu从服务器拿文件有点不熟悉,以前没有用过ssh提供的强大的sftp自服务。
4.实验收获和心得本次实验让我再次熟悉linux环境下的命令操作以及密钥的使用。
当然,最重要的是,这次实验让我们了解了SSH服务,这是linux实现远程管理的精华,通过一些基本的操作,对SSH口令登录和SSH密钥登录有了一定的了解。
为我们以后在linux环境下工作打下了基础。
而且让我们学会了使用putty工具集。
六、思考题1.在linux下密钥登录远端SSH服务器时,如采用远端服务器产生密钥的方法来完成密钥登录,应如何进行?与本实验中采用的方法相比,有什么利弊?答:在远程服务器上产生密钥对,把私钥传给客户端,客户端直接使用该密钥登录。
利弊:如果在服务器端产生密钥对的话,那么就需要把私钥传给客户端,而传递私钥很不安全。
2.实验结束后,以密钥用户登录ubuntu,查看~/.ssh/authorized_keys文件内容,解释其内容含义,说明该文件的用途。
答:经过查看,authoirized_keys文件中存放的是对方传上来的公钥。
其中的内容分为三部分,第一部分是密钥算法信息;第二部分是对方的公钥信息;第三部分是次公钥产生时的账户信息。