初学vb 回复于:2005-01-07 11:56:35 |
第二章是关于PUTTY客户端使用的认证方法,第三章是关于SSH服务器端安装的注意事项,第四章是SSH服务器的配置及安全!! |
初学vb 回复于:2005-01-07 16:31:32 |
第二章 SSH客户端之Putty的连接方法 1、运行环境 WINDOWS下安装的SSH客户端,名字是putty-0.56-installer.exe,可以到如下地址下载: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html,这个安装包是所有工具的集合,其实如果只做为连接用,你可以只下putty0.56.exe的。但我们这里因为要做密钥对,所以就下整个包安装吧。 2、在本机生成密钥过程 用putty套装的puttygen来产生密钥。密钥的类型选择SSH2 RSA。密钥的位数选择2048,然后点击"Generator",此时密钥生成当然也有几个选项出现。如果你有不止一个key,你可以在“Key comment”作注释用于区别其他的key。“Key passphrase“和“Confirm passphrase“用于对硬盘上的key进行加密,如过你自己一个人用机器觉得安全有保障的话可以让它们为空。然后保存两个key,用默认方式保存,那么公钥你可以指定文件名,私钥默认的文件扩展名是.ppk。在这里我们命名它为test.ppk,而公钥我们保存为test.pub,需要注意的是,如果用putty连接,私钥的扩展名必须是.ppk,而且你还可以将这个.ppk的私钥保存为SSH Secure Shell 格式和Openssh格式认知的私钥,这个对两个UNIX类主机之间相互通信提供了很大帮助。(我们以后会将两个UNIX类主机通过公私钥认证的方法给大家讲讲) 4、用Putty从本机登陆到远程UNIX类服务器上 我们还按先前的方法登陆到远程UNIX类服务器上,这样登陆后我们会在用户目录下,PWD一下,你可以看到你的用户目录路径,比如我的就是/home/test,那么好了,我们建立一个.ssh2的文件夹,在里面建立一个文件,authorization,内容如下: key test.pub 然后把你WINDOWS客户端上的test.pub上传到你在UNIX类服务器上刚建立好的.ssh2文件夹下,关闭Putty。这个上传命令你可以用 put ,下载就用get。你的通道可以用PSFTP建立,这个也在PUTTY的组件中。 5、用SSH客户端公钥认证状态登陆 重新启动Putty,建立一个session命名为test,设定你要登陆的远程ip,协议设为ssh,Connection设定在ssh的auth选项中,将private key的文件选择为刚才我们由puttygen产生的密钥test.ppk。点Open,要求输入username,我们输入用户名后远程系统开始public key认证,如果密钥有passphrase 则需要输入,否则直接就登录了。这个时候用公私钥认证和用密码认证同时存在,还没有达到我们的要求,那我们就在UNIX类服务器上修改/etc/ssh2/sshd2_config文件 把以下如下三行的password 删除,下面这三行是修改好的 AllowedAuthentications publickey AllowedAuthentications hostbased,publickey RequiredAuthentications publickey 这样当你再用密码登陆的时候就出现如下对话框了!! |
初学vb 回复于:2005-01-07 16:32:50 |
最后那个对话框是你被远程主机拒绝的对话框,贴图贴不上,就写了! |
初学vb 回复于:2005-01-07 16:39:17 |
三\四章明天奉上,希望能对大家有所帮助,欢迎转载,请注明是人来疯技术文档!!谢谢!!也欢迎大家2月能到人来疯论坛坐坐,www.d-1701.com |
初学vb 回复于:2005-01-08 14:34:38 |
第三章 Ssh服务器端安装 1、环境: 因为我们选用的SSH服务器是http://www.ssh.com 的SSH Secure Shell for unix类产品,所以我们主要介绍一下此类的Ssh服务器的安装过程。(SSH有两个版本,我们现在介绍的是版本2;Openssh就不介绍了,大家有兴趣的话可以参考一下网上文章) 2、编译安装 我们前面介绍过,现在的Ssh server for unix 类的最新版本是ssh-3.2.9-1,我建议大家用官方提供的TAR包,当然,如果你不熟悉编译过程,用RPM等安装方式也是可以的。如果用RPM安装,请先下载ssh-3.2.9-1.i386.rpm , 大家可以到以下地址下载: http://ftp.ssh.com/priv/secureshell/329wks+srv-lt49ldrk/linux/ssh-3.2.9-1.i386.rpm 安装时请用管理员权限 # rpm –ivh ssh-3.2.9-1.i386.rpm 如果是升级安装那参数就用 –Uvh 而3.2.9-1的TAR包大家可以到http://downloads.planetmirror.com/pub/ssh/ssh-3.2.9.1.tar.gz下载。安装时也使用管理员权限: # tar xzvf ssh-3.2.9.1.tar.gz # cd ssh-3.2.9.1 # ./configure (这里我们要说明一下,原来有些文档写如果你希望用tcp_wrappers来控制SSH,那么在configure时需要加上选项“--with-libwrap=/path/to/libwrap/”, 用来告诉SSH关于libwrap.a 和tcpd.h的位置,但3.2.0以上的SSH已经不需要这么麻烦了,它们已经内置了控制访问权限的功能。) # make ; make install ; make clean 这样就结束了安装。 3、简单配置Ssh server 无论你是用RPM或TAR包安装的ssh server,它的配置文件都在/etc/ssh2/sshd2_config,安装完后一般不用配置它,但如果你的22端口在安装ssh server之前已经被其他程序占用,那么你需要简单的配置一下这个文件,执行 vi /etc/ssh2/sshd2_config,找到第27行,Port 22 ,把22改成其他的端口就可以了。 4、启动Ssh server Ssh server 的默认启动文件是/usr/local/sbin/sshd2,而安装程序自动做了一个连接到这个文件的名字为sshd的文件,我们只要在/usr/local/sbin/目录中执行 ./sshd & 就可以简单的启用Ssh server,然后我们执行 # netstat –na 会看见22端口已经被监听了(你的可能是其他端口,具体看你在sshd2_config文件中的设置了。)但我们不想每次都要手动启动Ssh server,那么我们可以修改一下/etc/rc.d/rc.local文件,在这个文件的最后加入以下内容: #start ssh /usr/local/sbin/sshd & 其中第一行为注释内容,第二行为启动SSH服务器并作为后台守护进程运行。 这样就好了,系统重起时可以自动启动SSH服务,但是启动后你如果在服务器端插上显示器,会在最后该登陆的时候看到一行字,意思就是Ssh server 服务启动了,我比较挑剔,不想看到这个提示,而且我想把Ssh服务放到LINUX服务启动过程中,这样比较美观一点。那么我们就不能修改/etc/rc.d/rc.local文件,我们要进入/etc/init.d/中建立一个SHELL文件,名字就叫sshd 内容如下: #!/bin/bash cd /usr/local/sbin ./sshd & 然后给这个文件加上可执行权限 # chmod +x sshd 然后进入/etc/rc3.d,做一个软链接文件 # cd /etc/rc3.d # ln -s ../init.d/sshd S13sshd 这样就达到了我的要求,好了,Ssh server的安装就介绍到这里吧,安装是很简单的,希望大家编译安装成功。 |
初学vb 回复于:2005-01-08 14:38:51 |
其实安装应该是在应用之前的,而本来我想写的就是不用密码的登陆方法,后来发现大家对安全的认知度不是很高,至今还有人用TELNET登陆,所以索性我就写了这么一个普及系列文章,大家能在这里找到一丁点有用的地方我就满足了! |
forestwill 回复于:2005-01-08 23:31:51 |
好东西,顶,小弟正需要这样的教程,非常感谢楼主 |
ouatitj 回复于:2005-01-08 23:51:17 |
不错 不过 楼主能不能告诉偶SSH是什么东东 是不是一种验证的方法 ? |
yjnet 回复于:2005-01-10 08:13:57 |
ssh是一种安全shell,可确保你在远程能安全登录服务器。它是用来取代不安全的r*命令的。它还可通过端口转发功能保护X window等程序的安全传输。 下面有ssh权威指南一书的读书笔记: http://www.ringkee.com/jims/read_folder/ |
jyhuang 回复于:2005-01-10 09:29:48 |
四章??? |
初学vb 回复于:2005-01-10 10:53:57 |
由于周六日在公司加班,第四章还没完成,我尽量在今天写完奉献给大家!! |
初学vb 回复于:2005-01-10 23:54:08 |
越写越多,我把WIN下的SSH也加进来了,把原来的结构完全打乱重来,而且现在碰到一个问题,就是两边的服务器都是UNIX类时的认证方法,理论上可行,实际操作有问题,请大家耐心等等,毕竟大家需要的是指导性文章,而不是误导!!相信我,等待是有价值的!! |
samme 回复于:2005-01-11 01:02:08 |
[quote:7d8d296ad8="初学vb"]越写越多,我把WIN下的SSH也加进来了,把原来的结构完全打乱重来,而且现在碰到一个问题,就是两边的服务器都是UNIX类时的认证方法,理论上可行,实际操作有问题,请大家耐心等等,毕竟大家需要的是指导性文章,而不是误导!!?..........[/quote:7d8d296ad8] 请楼上说的明白些,我真的是不明白两台unix的机子相互认证会出来什么问题?(我是天天在用,在terminal里面打ssh就完事了呀)。 恩,恩,莫非是公钥格式不一样? 而且看了一大堆都是怎样配置的,虽然说要用起来我们必须先设置好,但是我觉得如果能加上其他高阶的东西这样会更实用些,比如如何建立ssh隧道,如何自由的使用隧道来加密所需数据/服务,如何穿防火墙,如果建虚拟网络等。 以上的总总都需要ssh的转端口的强大功能(local and remote port forwarding)。如果楼上愿意一起写的话,给小弟发个email: chencontact@yahoo.co.uk |
初学vb 回复于:2005-01-11 11:15:11 |
两个UNIX类相互的不用密码的通信完成了!大家看看吧!! 3、UNIX类客户端—UNIX类服务端 1、运行环境 两边都是UNIX类的服务器A和B,都已经安装了SSH Secure Shell 的服务器程序且运行正常。我们需要实现的是从主机A登陆到主机B上,不需要密码。 2、生成密钥过程 在主机A上: # cd /usr/local/bin # ./ssh-keygen2 -t rsa 默认密钥的位数是2048,当提示你Passphrase 的时候,直接按两次回车跳过,成功后会提示如下: Private key saved to /root/.ssh2/id_rsa_2048_a Public key saved to /root/.ssh2/id_rsa_2048_a.pub 3、从A登陆到B过程 我们进入当前A机器用户的ssh2目录,创建一个认证文件,步骤如下: # cd ~/.ssh2 # echo "IdKey id_rsa_2048_a" > identification 取保id_rsa_2048_a 和 identification是在同一个目录下,好了,在主机A上我们的步骤就完成了。 然后我们就把id_rsa_2048_a.pub传到我们要ssh到的主机B上。这个步骤略过。 ssh登陆到主机B上,在B上的用户ssh2目录下创建一个authorization文件,步骤如下: # cd ~/.ssh2 # echo “key id_rsa_2048_a.pub” >> authorization //注意我们这里是追加 退出主机B,回到主机A # ssh [IP OF B] 显示Authentication suclearcase/" target="_blank" >ccessful.不需要密码了!!否则会显示Authentication failure.你得查查哪有问题了。当然我们还要在B服务器上修改/etc/ssh2/sshd2_config文件 把以下如下三行的password 删除,下面这三行是修改好的 AllowedAuthentications publickey AllowedAuthentications hostbased,publickey RequiredAuthentications publickey 这样才达到了我们的目的呢!! |
初学vb 回复于:2005-01-11 11:59:08 |
[quote:8cfcf2aa2a="samme"] 请楼上说的明白些,我真的是不明白两台unix的机子相互认证会出来什么问题?(我是天天在用,在terminal里面打ssh就完事了呀)。 恩,恩,莫非是公钥格式不一样? 而且看了一大堆都是怎样配置的,虽然说要用起?.........[/quote:8cfcf2aa2a] 兄弟,看看我上面的UNIX类之间的相互通信你就能明白了!!最好对比一下WIN和UNIX类的,不太一样!! |
samme 回复于:2005-01-11 18:47:06 |
[quote:4da83d22cb="初学vb"] 兄弟,看看我上面的UNIX类之间的相互通信你就能明白了!!最好对比一下WIN和UNIX类的,不太一样!![/quote:4da83d22cb] 你后半句话的意思是不是不要让我用win的经验来套用unix?我可以肯定的告诉你我现在的电脑上没有windows,在可见的将来我也没有打算去装。 我用的是被你贬的一无是处的openssh(很可惜,就是这样的一个漏洞奇多的ssh服务/客户端拥有88%的市场占有率). alpha连linux, linux连alpha没有任何问题,而且配置非常简单(当然,我说的是你一直强调的不用密码连接的非常实用的功能)。 只需要把自己的public key放到对方服务器上的 authorized_keys 里面就可以。再提醒一下传文件是不必须的(就像你在上面做的把public key以文件的形式传到对方服务器上)。 很遗憾,看来port forwarding 只能自己写了。 |
初学vb 回复于:2005-01-11 22:24:22 |
[quote:7b731249d5="samme"] 你后半句话的意思是不是不要让我用win的经验来套用unix?我可以肯定的告诉你我现在的电脑上没有windows,在可见的将来我也没有打算去装。 我用的是被你贬的一无是处的openssh(很可惜,就是这样的一个漏洞奇多?.........[/quote:7b731249d5] 首先,我要感谢你的直率,有话就说,在我生活的圈子中已经很少有人能这么讲话了.(完全没有贬义,别误会!!只是感慨一下!!) 我对你的问题的答复: 对于OPENSSH的理解只是我的个人看法,用什么服务器端或客户端都是个人的权利.我不会在我的文章里强迫大家用SSH的,当然如果你认为openssh好那么我建议你写一篇OPENSSH的文档给大家,让大家共同进步! 另:我也强调了余下的部分我一直在写,只是时间的安排上有些问题;如果你能先写出来关于SSH的隧道加密功能的文档,我是十分欢迎的,毕竟大家都对SSH这种安全工具和技术投入了很大的热情,有了大家的投入,我相信网络安全会在大家心中占有一席之地的. 希望我们大家都能在CU大家庭这个友好的环境中共同探讨问题! |
初学vb 回复于:2005-01-11 22:43:09 |
WIN之间的SSH方法我已经写完了,但考虑到大家看的方便,抓了大部分的图,连密钥的生成方法也用图来表示了!考虑到CU不支持贴图的功能,这个方法就先保留不发了,现在还在赶制PDF,我在这个帖子里发表的一切以后都能在PDF里找到,PDF就起名叫SSH系列教程了! |
Macolex 回复于:2005-01-12 03:18:26 |
[quote:33ab7dbaca="delphij"]OpenSSH. ssh是商业软件,而说OpenSSH安全漏洞多……上次OpenSSH漏洞什么时候来着? 2003年10月,一年多以前的事情了。 OpenBSD的人在安全方面有非常多的创新,更何况安全绝不是换个软件就顶用的。 [/quote:33ab7dbaca] |
網中人 回复于:2005-01-12 08:02:31 |
寫得很不錯! 先鼓勵一下! 然而, 必須提醒一下: ssh 的使用, 尤其是 ssh v2, 是有限制的. 使用前最好讀清楚其授權條款, 特別是商業用戶. 若用 open ssh, 則無此慮... 至於安全漏洞, 容我公平的說一句: 只要是人寫的, 就不能保證沒有安全漏洞! 從這個基礎出發, openssh 與 ssh 都是平等的. 關鍵還是使用端的管理員是否建立起足夠的安全觀念及操作. 我認為樓主單方面抨擊 openssh 的安全性, 似乎有那麼一丁點兒失卻公允呢. 至於 unix-like OS (如 linux) 上設定 rsa/dsa key 的驗證, 基本上不用超過 3 行 command line 就可搞定了: keygen 跑一跑 scp public key 進 remote ssh 操作 remote 將 key 加入 authorized_keys 最後, 也很期待 port forward, X11 forward 等方面的文檔. 給樓主加油! |
初学vb 回复于:2005-01-12 09:33:43 |
感谢大家的鼓励,我会再接再励的! 其实SSH的原理都是一样的,只不过每个公司的产品有每个公司的特色,如果通一个,其他的也都是万变不离其宗的! 我对OPENSSH的理解是我个人的看法,我会在文章中把贬义的词删除,让大家自己做判断。 |
初学vb 回复于:2005-01-12 09:48:20 |
[quote:0df419a266="Macolex"][/quote:0df419a266] 巧了,ssh现在的最新版本也是2003-10-01 12:00发布的! |
山中无老虎 回复于:2005-01-12 10:02:06 |
使用SSH时一定要注意,不同的SSH工具所生成的密钥是不能通用的。另外按我的实践,在Linux下生成的SSH目录应为~下的.ssh而不是.ssh2,不知是不是这样。还有就是两台机器登录时不需不需要密码是由设置决定的,并不是从根本上不需要。 |