最近公司的服务器终于强制要求使用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这个程序生成的私钥和公钥的格式也不相同
比较常用的服务器端有OpenSSH,SSH 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,是这两种格式的钥匙都不支持的,这里就引出一个比较强的工具:
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