大家都介绍的是*nux机器ssh访问*nux的时候可以用RSA证书认证代替密码(当然这必须要求被登录的sshd服务器启用允许证书认证,因为 我有时候不允许这个),其实windows访问sshd的时候也可以,当然你必须安装ssh或者cygwin。下面我以cygwin为例:
首先在cygwin下执行ssh-keygen -d
[vitter@securitycn ~]# ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (/home/vitter/.ssh/id_dsa): (采用缺省值,回车)
Created directory '/home/vitter/.ssh'.
Enter passphrase (empty for no passphrase): (不用密码,回车)
Enter same passphrase again: (回车)
Your identification has been saved in /home/vitter/.ssh/id_dsa.
Your public key has been saved in /home/vitter/.ssh/id_dsa.pub.
The key fingerprint is:
71:50:79:88:70:86:98:c3:b9:48:40:17:2d:21:e8:de vitter@securitycn
这样,在/home/vitter/.ssh目录下生成如下两个文件:
id_dsa
id_dsa.pub
将id_dsa.pub传到sshd服务器上。
然后把里面的内容添加到服务器要登录的用户的.ssh目录下的authorized_keys文件中(以root为例):
[root@sshd1 ~]# cat id_dsa.pub >> /root/.ssh/authorized_keys
这样在windows下以后直接 ssh root@sshd1 就可以不用密码了。
[vitter@securitycn ~]# ssh root@sshd1
没有密码输入提示了。
如果用SecureCrt可以直接把生成密钥导入。或者用SecureCrt也可以生成密钥:
关于SecureCrt使用ssh2的补充
很多朋友都来问我ssh2如何实现.的确用ssh1有点过时了,不妨补充一下ssh2的使用说明,其实看了ssh1的使用说明,再来用ssh2一样很简单.
1.首先产生ssh2的秘匙对,我选择使用RSA加密.
Generate your key in SecureCRT (Global Options ->SSH2 ->Create Identity File) in RSA format
用SecureCRT生成RSA格式的密钥对,操作步骤:选项 -> 全局选项 -> SSH2 -> 创建身份文件
2.在linux服务器上建立.ssh目录,如果你以前已经在正常使用ssh1了,那就这一步可以不做,比如我这里要用root帐户使用ssh2
mkdir /root/.ssh
chmod 700 /root/.ssh
3.把生成的 identity.pub 传到linux服务器上,如果你已经在用SecureCrt,可以参考《SecureCRT来上传和下载数据》http://hi.baidu.com/dlzok/blog/item/1739fc1fde4800f8e1fe0b22.html
4.导入公匙
ssh-keygen -X -f Identity.pub >> /root/.ssh/authorized_keys
对于不是用openssh的,因为不同软件生成的密钥是不通用的,所以方法有点变化,比如用Secure Shell的:
1. 在本地主机(比如,local)上生成自己的ssh公钥和私钥。命令如下:
local# ssh-keygen
Generating 1024-bit dsa key pair
Key generated.
1024-bit dsa, teng@ns, Fri Oct 20 2000 17:27:05
Passphrase :************ /*在此输入你的口令,以后访问这台主机时要用。
Again :************ /*
Private key saved to /home1/teng/.ssh2/id_dsa_1024_a
Public key saved to /home1/teng/.ssh2/id_dsa_1024_a.pub
生成的私钥和公钥(id_dsa_1024_a和id_dsa_1024_a.pub)存放在你目录的~/.ssh2目录下。和用户相关的SSH配置文件 都在~/.ssh2下。私钥由用户保存在本地主机上,而公钥需传送到远地主机的你自己的账号的~/.ssh2下,如果你要用ssh2访问本地主机的话。
2. 在~/.ssh2下创建“identification”文件用来说明进行身份认证的私钥。命令如下:
local:~/.ssh2# echo "IdKey id_dsa_1024_a" > identification
3.同样地,在远地主机(比如,remote)上完成上面步骤。
4.将本地(local)下你自己(这里是“teng”)的公钥(id_dsa_1024_a.pub)拷贝到远地主机(remote.54ncr.com)上你自己家目录下的.ssh2目录下,可命名为“local.pub”,一般用ftp上传即可。
5. 在远地主机上,你自己家目录的.ssh2目录下,创建“authorization”文件,其中指定用来进行身份认证的公钥文件。命令如下:
remote:~/.ssh2# echo “Key local.pub” > authorization
6. 现在你可以从本地用ssh2登录到远地系统了。命令如下:
local# ssh remote
Passphrase for key "/home1/teng/.ssh2/id_dsa_1024_a" with comment "1024-bit dsa,
teng@ns, Fri Oct 20 2000 17:27:05":***********
这时会要你输入你的ssh口令(Passphrase)。验证通过后,即登录到remote主机上。