Jan 13 2006

使用public-private key pair登陆SSH服务器

Category: 技术ssmax @ 15:59:11

最近公司的服务器终于强制要求使用key来登陆了,总结了一些要点归纳如下:

要使用key登陆,首先每个人都要有一对keys吧,我就喜欢所有服务器都用同一组keys,这样维护方便(其实我懒,哈哈),就这对keys是怎么来的呢?

生成keys一般有几种方法

一般服务器端都自带有生成程序ssh-keygen

>ssh-keygen -b1024 -tdsa -C注释
Generating public/private dsa key pair.
Enter file in which to save the key (/home/用户名/.ssh/id_dsa): 这里写保存路径
Enter passphrase (empty for no passphrase):key密码
Enter same passphrase again: key密码
Your identification has been saved in /home/用户名/.ssh/id_dsa.
Your public key has been saved in /home/用户名/.ssh/id_dsa.pub.
The key fingerprint is:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

这样就生成一组keys了

私钥:/home/用户名/.ssh/id_dsa

公钥:/home/用户名/.ssh/id_dsa.pub

类型:DSA 1024bit

passphrase 是 key密码,为了防止有人拿到了你的私钥,在使用私钥的时候需要输入密码,这样别人拿到也用不了

 

注意,由于服务器端的不同,ssh-keygen这个程序生成的私钥和公钥的格式也不相同

比较常用的服务器端有OpenSSHSSH Communications

openssh生成的过程就如上面所述,然后将这对keys下载到本机备用,再在服务器端执行:

>cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 

>chmod 700 ~/.ssh

>chmod 600 ~/.ssh/*

openssh默认用户登陆时候使用的公钥列表就保存在

 ~/.ssh/authorized_keys(~是用户目录,ssh2方式)

,当然这些可以通过服务器配置文件sshd_config修改。

注意这些目录的权限,如果group或者other可以写的,这些公钥就会被视作无效!

 

SSH Communications的设置方式大同小异,注意的是openssh生成的key,SSH Communications是不能用的,需要用转换工具转换或者用SSH Communications自带的ssh-keygen(ssh-keygen2)生成。

 把生成或者转换后的公钥cp到

~/.ssh2/identity.pub

>echo “Key identity.pub” >> ~/.ssh2/authorization

就可以了,如果是ssh1的话就和OpenSSH的一样,直接是~/.ssh/authorized_keys

 

现在服务器端就配置好了,如果你是直接在服务器那边(或者你的主机是linux),就可以直接用ssh来连接其他服务器,怎么使用私钥id_dsa,自己man ssh看看应该就清楚了,我最喜欢就是使用scp来站对站copy文件了(在没有rsync的情况下,哈哈)

如果你是使用win登陆服务器的,一般大家是使用SecureCRT或者Secure SSH Client作为客户端的吧

SecureCRT现在是支持OPENSSH格式的钥匙keys,还有自己的VanDyke格式的钥匙(就是用它的keygen生成的,不建议使用),在Session Options的SSH2选项里面,选定PublicKey验证方式,然后在属性里面选择你的私钥文件(id_dsa),就可以使用了(最好把id_dsa和id_dsa.pub放在同一个目录下面)

Secure SSH Client现在一定要收费才能使用,好久没有用过了,现在能用到的都是3.xx的版本吧应该。大概设置应该也差不多,不过估计不能使用OpenSSH格式的钥匙,需要转换。

 

另外还有一些应用,比如WinCVS,是这两种格式的钥匙都不支持的,这里就引出一个比较强的工具:

putty

WinCVS支持这个格式的钥匙,而且putty可以用来登陆ssh、telnet,不过就是界面弱了点,还能转换上面2种格式的钥匙,哈哈

下载装好putty之后,找到PUTTYGEN.EXE

双击打开程序,选择Conversions标签里面的Import Key,把你从OpenSSH服务器端生成的公钥id_dsa导入,然后选择Conversions->Export ssh.com key就能拿到ssh.com格式的私钥

另外File->Save private key,就可以拿到putty格式的私钥

拿到putty格式的私钥就能在wincvs 2.0之后的版本直接使用,也是在连接方式里面选,慢慢看看吧

如果是wincvs 1.3和之前的版本,需要用plink作为ssh代理,详细的设置方法有很多文章介绍,这里就不说了。

以后一有新服务器(一般用OpenSSH的)就直接把id_dsa.pub扔上去,就能玩SSH登陆啦。

oh,忘记说了,如果把openssh的公钥用到ssh.com的服务器上,直接copy中间那段你看不懂的东西过去就可以了,自己研究一下两者的格式吧,哈哈,有些东西始终是要自己动手di~

Leave a Reply