clash代理模式区别
我们需要知道PublickKey是指公钥,而privatekey是指私钥。认证的过程是这样的:publickey对数据进行加密而且只能用于加密,privatekey只能对所匹配的publickey加密过的数据进行解密。我们把publickey放在远程系统合适的位置,然后从本地开始进行ssh连接。此时,远程的sshd会产生一个随机数并用我们产生的publickey进行加密后发给本地,本地会用privatekey进行解密并把这个随机数发回给远程系统。最后,远程系统的sshd会得出结论——我们拥有匹配的privatekey允许我们登录。就这么简单!
我用的是rsa的密钥,默认是2048位,足够我们用的了,还可以使用dsa方式的密钥。我就不在这里说明了
系统自动生成密钥对,默认放在C:DocumentsandSettingsXXXApplicationDataSSHUserKeys目录下,其中XXX是你执行程序时用的帐户,默认名称是id_rsa_2048_a和id_rsa_2048_a.pub,而后者就是我们要传到服务器上的公钥。(生成密钥对的同时让你输入一个密码,因为我们想不输入密码直接登陆服务器,所以就直接回车了,但如果你想更安全一些,还是建议你在这里也输入密码。)
我们还按以前的方法登陆到远程UNIX类服务器上,这样登陆后我们会在用户目录下,PWD一下,你可以看到你的用户目录路径,比如我的就是/home/test,那么好了,我们建立一个.ssh2的文件夹,在里面建立一个文件,authorization,内容如下:
重新启动SSH客户端,在登陆认证状态栏选择PublicKey方式,登陆到你刚才放id_rsa_2048_a.pub的那台服务器,你会发现你马上就登陆进来了,没有密码限制了。这个时候用公私钥认证和用密码认证同时存在,还没有达到我们的要求,那我们就在UNIX类服务器上修改/etc/ssh2/sshd2_config文件
,这个安装包是所有工具的集合,其实如果只做为连接用,你可以只下putty0.56.exe的。但我们这里因为要做密钥对,所以就下整个包安装吧。
用putty套装的puttygen来产生密钥。密钥的类型选择SSH2RSA。密钥的位数选择2048,然后点击Generator,此时密钥生成当然也有几个选项出现。如果你有不止一个key,你可以在“Keycomment”作注释用于区别其他的key。“Keypassphrase“和“Confirmpassphrase“用于对硬盘上的key进行加密,如过你自己一个人用机器觉得安全有保障的话可以让它们为空。然后保存两个key,用默认方式保存,那么公钥你可以指定文件名,私钥默认的文件扩展名是.ppk。在这里我们命名它为test.ppk,而公钥我们保存为test.pub,需要注意的是,如果用putty连接,私钥的扩展名必须是.ppk,而且你还可以将这个.ppk的私钥保存为SSHSecureShell格式和Openssh格式认知的私钥,这个对两个UNIX类主机之间相互通信提供了很大帮助。(我们以后会将两个UNIX类主机通过公私钥认证的方法给大家讲讲)
我们还按先前的方法登陆到远程UNIX类服务器上clash代理模式区别,这样登陆后我们会在用户目录下,PWD一下,你可以看到你的用户目录路径,比如我的就是/home/test,那么好了,我们建立一个.ssh2的文件夹,在里面建立一个文件,authorization,内容如下:
然后把你WINDOWS客户端上的test.pub上传到你在UNIX类服务器上刚建立好的.ssh2文件夹下,关闭Putty。这个上传命令你可以用put,下载就用get。你的通道可以用PSFTP建立,这个也在PUTTY的组件中。
重新启动Putty,建立一个session命名为test,设定你要登陆的远程ip,协议设为ssh,Connection设定在ssh的auth选项中,将privatekey的文件选择为刚才我们由puttygen产生的密钥test.ppk。点Open,要求输入username,我们输入用户名后远程系统开始publickey认证,如果密钥有passphrase则需要输入,否则直接就登录了。这个时候用公私钥认证和用密码认证同时存在,还没有达到我们的要求,那我们就在UNIX类服务器上修改/etc/ssh2/sshd2_config文件
因为我们选用的SSH服务器是的SSH Secure Shell for unix类产品,所以我们主要介绍一下此类的Ssh服务器的安装过程。(SSH有两个版本,我们现在介绍的是版本2;Openssh就不介绍了,大家有兴趣的话可以参考一下网上文章)
我们前面介绍过,现在的Ssh server for unix 类的最新版本是ssh-3.2.9-1,我建议大家用官方提供的TAR包,当然,如果你不熟悉编译过程,用RPM等安装方式也是可以的。如果用RPM安装,请先下载ssh-3.2.9-1.i386.rpm , 大家可以到以下地址下载:
无论你是用RPM或TAR包安装的ssh server,它的配置文件都在/etc/ssh2/sshd2_config,安装完后一般不用配置它,但如果你的22端口在安装ssh server之前已经被其他程序占用,那么你需要简单的配置一下这个文件,执行 vi /etc/ssh2/sshd2_config,找到第27行,Port 22 ,把22改成其他的端口就可以了。
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文件,在这个文件的最后加入以下内容:
这样就好了,系统重起时可以自动启动SSH服务,但是启动后你如果在服务器端插上显示器,会在最后该登陆的时候看到一行字,意思就是Ssh server 服务启动了,我比较挑剔,不想看到这个提示,而且我想把Ssh服务放到LINUX服务启动过程中,这样比较美观一点。那么我们就不能修改/etc/rc.d/rc.local文件,我们要进入/etc/init.d/中建立一个SHELL文件,名字就叫sshd 内容如下:
两边都是UNIX类的服务器A和B,都已经安装了SSH Secure Shell 的服务器程序且运行正常。我们需要实现的是从主机A登陆到主机B上,不需要密码。
默认密钥的位数是2048,当提示你Passphrase 的时候,直接按两次回车跳过,成功后会提示如下:
ssh登陆到主机B上,在B上的用户ssh2目录下创建一个authorization文件,步骤如下:


