人来疯论坛Ssh普及系列
作者:adminxu
MSN:xu1701@hotmail
www.d-1701 一、SSH是什么?
一个名为Tatu Yl?nen的芬兰程序员开发了一种网络协议和服务软件,称为SSH(Secure SHell的缩写)。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,虽然许多人把Secure Shell仅当作Telnet的替代物,但你可以使用它来保护你的网络连接的安全。你可以通过本地或远程系统上的Secure Shell转发其他网络通信,如POP、X、PPP和FTP。你还可以转发其他类型的网络通信,包括CVS和任意其他的TCP通信。另外,你可以使用带TCP包装的Secure Shell,以加强连接的安全性。除此之外,Secure Shell还有一些其他的方便的功能,可用于诸如Oracle 之类的应用,也可以将它用于远程备份和像SecurID卡一样的附加认证。SSH有两个版本,下文我们介绍的都是版本2
二、软件的选取
1、服务器端
Windows server上安装的服务器端可以是:
F-secure ssh server for win
Ssh secure shell server for win
Unix类上安装的服务器端可以是:
Openssh-server
Ssh secure shell server for unix
2、客户端
Windows上的客户端可以是:
Ssh secure shell client
F-secure ssh client
Putty software
Uinx上的客户端可以是:
Openssh
Ssh secure shell for unix
由于openssh漏洞众多,升级频繁,所以unix下的server和client主要选www.ssh的Ssh secure shell来介绍;windows下的server和client主要选F-secure ssh系列、Ssh secure shell client 以及putty来介绍,(Ssh secure shell server for win是商业产品,不在选型范围之内)
三、Ssh服务器/客户端安装及启动
1、UNIX类的服务器及客户端安装
我们前面介绍过,现在的Ssh server for unix类的最新版本是ssh-3.2.9-1,我建议大家用官方提供的TAR 包,当然,如果你不熟悉编译过程,用RPM等安装方式也是可以的。如果用RPM安装,请先下载ssh-3.2.9-1.i386.rpm,大家可以到以下地址下载:
ftp.ssh/priv/secureshell/329wks+srv-lt49ldrk/linux/ssh-3.2.9-1.i386.rpm
安装时请用root权限
#rpm–ivh ssh-3.2.9-1.i386.rpm如果是升级安装那参数就用–Uvh
而3.2.9-1的TAR包大家可以到downloads.planetmirror/pub/ssh/ssh-3.2.9.下载。安装时请使用root权限:
#tar xzvf ssh-3.2.9.
#cd ssh-3.2.9.1
#./configure--enable-static(这里需要说明一下,--enable-static参数是为了控制用户访问权限的,后面我们会做介绍;如果你希望用tcp_wrappers来控制SSH,那么在configure时需要加上选项“--with-libwrap”,如果编译时不能到libwrap.a,那么需要用“--with-libwrap=/path_to_libwrap.a/”告诉SSH关于libwrap.a的位置)
#make;make install;make clean
这样就结束了安装。客户端和服务端都同时被安装到了UNIX类服务器上。
(2)、Windows类的服务器及客户端安装
i:在windows server上安装F-secure ssh server
首先在网上取得文件,版本号是5.3build28,这个就是F-secure ssh server for win的安装文件,大家可以到google搜索一下,具体安装过程和普通windows软件没什么区别,就是下一步下一步,最后程序会生成一个默认的主机密钥,然后就结束安装了。安装完后你的程序组里会有一个F-secure SSH server,里面有一个Configuration,这个就是配置windows server服务端的程序。
ii:在你本地windows上安装F-secure ssh client
首先在网上取得F-secure SSH client的安装文件,版本号是5.4build56,然后一步步按提示安装即可,安装完后,在桌面上会产成三个快捷方式,一个是F-secure SSH client,用于远程管理服务器,另一个是F-secure SSH Secure File Transfer Client,用于和服务器进行文件传输,最后一个是F-secure SSH Authentication Agent,用于管理加密的私钥。
iii:安装SSHSecureShellClient
首先在www.ssh上取得SSHSecureShellClient-3.文件,然后一步步按提示安装即可,安装完后,在桌面上会产成两个快捷方式,一个是“SSH Secure Shell Client”,用于远程管理服务器,另一个是“SSH Secure File Transfer Client”,用于和服务器进行文件传输。
iv:安装putty software
我们可以从nd.org.uk/~sgtatham/putty/download.html下载到最新版本的putty,现在的安装文件包是,然后一步步按提示安装,安装完成后你会在程序栏看见多了一个putty,里面可执行文件是Pageant,PSFTP,PuTTY,PuTTYgen四个,其中Pageant用来管理加密私钥,PSFTP 和服务器进行文件传输,PuTTY是远程管理服务器的主程序,PuTTYgen是制作公私钥的程序。
为了描述清楚,我们规定UNIX类服务器上只安装Ssh secure shell产品,而SSHSecureShellClient和Putty是用来连接UNIX类服务器的;WIN SERVER服务器上只安装F-secure ssh server,而F-secure ssh client是用来连接windows服务器的。
2、简单配置
(1)、Ssh server
在unix类服务器上无论你是用RPM或TAR包安装的ssh server,它的配置文件都在/etc/ssh2/sshd2_config,安装完后一般不用配置它,但如果你的22端口在安装ssh server之前已经被其他程序占用,那么你需要简单的配置一下这个文件,执行vi/etc/ssh2/sshd2_config,到第27行,Port22,把22改成其他的端口然后再启动ssh服务就可以了。
在win server上,如果你的22端口被占用了,那么你能从Configuration—>network里来重新指定(2)、Ssh Client
主要是在使用SFTP时,默认只能显示用户的宿主目录的内容和非隐藏文件。但有时候您可能还要查看其它目录或者隐藏文件,这时只需要在菜单“eidt—>setting—>global settings—>file transfer”的选项
中选中“show root directory”和“show hidden file”两个选项即可。
3、启动
(1)、启动服务器端
UNIX类的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工具windows
这样就达到了我的要求,好了,Ssh server的安装就介绍到这里吧,安装是很简单的,希望大家编译安装成功。
WIN SERVER的Ssh server的默认启动文件是,一般装完,服务就可以启动了,如果没有启动,你可以手工启动这个文件。
(2)、启动客户端
双击桌面上的SSH Secure Shell Client图标,在工具栏中点击“quick connnect”,输入正确的主机名和用户名,然后在弹出的对话框中输入密码完成登录,即可开始执行命令或者传输文件。Putty和F-secure SSH client 都是大同小异的。
四、以公私钥认证为基础的连接方法
1、为什么要公私钥认证方法(连接到主机不输入密码)
首先我们需要知道几个概念—Publick Key是指公钥,而private key是指私钥。
认证的过程是这样的:public key对数据进行加密而且只能用于加密,private key只能对所匹配的public key加密过的数据进行解密。我们把public key放在远程系统合适的位置,然后从本地开始进行ssh连接。此时,远程的sshd会产生一个随机数并用我们产生的public key进行加密后发给本地,本地会用private key进行解密并把这个随机数发回给远程系统。最后,远程系统的sshd会得出结论——我们拥有匹配的private key允许我们登录,就这么简单!
2、WIN客户端—UNIX类服务端
(1)SSH客户端之SSH Secure Shell的连接方法
i:运行环境
WINDOWS下安装SSH客户端,名字是SSHSecureShellClient-3.,UNIX/LINUX的SERVER端我们使用的是ssh-3.2.9-1.i386.rpm(如果你是AIX或者SOLARIS,要下不同的版本,这里以RHCE3为例子)。确定把UNIX类主机的默认的Openssh全部卸载掉后安装ssh-3.2.9-1.i386.rpm。
ii:在本机生成密钥过程
WINDOWS下寻文件,这是生成密钥的文件,我的在C:\Program Files\SSH Communications Security\SSH Secure Shell,在DOS下执行这个文件,方法是
C:\Program Files\SSH Communications Security\SSH Secure Shell>ssh-keygen2-t rsa
我用的是rsa的密钥,默认是2048位,足够我们用的了,还可以使用dsa方式的密钥。(采用RSA的密钥用途广泛,大多数server支持,所以建议使用)系统自动生成密钥对,默认放在C:\Documents and Settings\XXX\Application Data\SSH\UserKeys目录下,其中XXX是你执行程序时用的帐户,默认名称是id_rsa_2048_a和id_rsa_2048_a.pub,而后者就是我们要传到服务器上的公钥。(生成密钥对的同时让你输入一个密码,因为我们想不输入密码直接登陆服务器,所以就直接回车了,但如果你想更安全一些,还是建议你在这里也输入密码。)
iii、用SSH客户端从WIN系统登陆到远程UNIX类服务器上
我们还按以前的方法登陆到远程UNIX类服务器上,这样登陆后我们会在用户目录下,PWD一下,你可以看到你的用户目录路径,比如我的就是/home/test,那么好了,我们建立一个.ssh2的文件夹,在里面建立一个文件,authorization,内容如下:
key id_rsa_2048_a.pub
然后把你WINDOWS客户端上的id_rsa_2048_a.pub上传到你在UNIX类服务器上刚建立好的.ssh2文件夹下,关闭SSH客户端。
iv、用SSH客户端公钥认证状态登陆
重新启动SSH客户端,在登陆认证状态栏选择Public Key方式,登陆到你刚才放id_rsa_2048_a.pub的那台服务器,你会发现你马上就登陆进来了,没有密码限制了。这个时候用公私钥认证和用密码认证同时存在,还没有达到我们的要求,那我们就在UNIX类服务器上修改/etc/ssh2/sshd2_config文件
把以下如下三行的password删除,下面这三行是修改好的
AllowedAuthentications publickey
AllowedAuthentications hostbased,publickey
RequiredAuthentications publickey
这样当你再用密码登陆的时候就出现如下对话框了!!
(2)SSH客户端之Putty的连接方法
i、运行环境
安装了的WINDOWS,这个putty安装包是所有工具的集合,其实如果只做为连接用,你可以只下的。但我们这里因为要做密钥对,所以就下整个包安装吧。
ii、在本机生成密钥过程
用putty套装的puttygen来产生密钥。密钥的类型选择SSH2RSA。密钥的位数选择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类主机通过公私钥认证的方法给大家讲讲)
iii、用Putty从本机登陆到远程UNIX类服务器上
我们还按先前的方法登陆到远程UNIX类服务器上,这样登陆后我们会在用户目录下,PWD一下,你可以看到你的用户目录路径,比如我的就是/home/test,那么好了,我们建立一个.ssh2的文件夹,在里面建立一个文件,authorization,内容如下:
key test.pub
然后把你WINDOWS客户端上的test.pub上传到你在UNIX类服务器上刚建立好的.ssh2文件夹下,关闭Putty。这个上传命令你可以用put,下载就用get。你的通道可以用PSFTP建立,这个也在PUTTY的组件中。
iv、用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
这样当你再用密码登陆的时候就出现如下对话框了!!
v、用pageant管理加密的私钥
如果private key用passphrase加了密,可以运行。运行后,在system tray里面就会出现一个戴着帽子的图标。双击这个图标,就会有一个对话框出现。但击Add Key,然后选择加了密的private key,单击Open后,就会出现另一个对话框问你要这个private key的passphrase。输入passphrase并单击OK 后,在第一个对话框里面就会出现这个key的信息,表示这个key已经被加上了。然后打开putty,load 要用该key的session,然后在左面的菜单里,选择connection,然后在右面的Auto-login username
里面填入你的用户名,在Connection->SSH->Auth->Private key file for authentication里面,填入上面的private key文件,再回到session,将所作的变化保存下来。从此以后,这个session就不会提示输入

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。