一直在SecureCRT 上使用密码和键盘交互方式登陆ssh ,一直没试成功,今天无意在一篇文章里受了点启发,顺便就在前些天装的虚拟机上试成了。客户端用的SecureCRT5.5.1,服务端为openSUSE10.3上默认安装的OpenSSH_4.6p1.. [4 Y. ~5 h1 N2 {/ P/ _) B" j; `
& U; \! T; K5 w6 E# X; N 首先配置SecureCRT上的RSA密钥,打开SecureCRT→Quick Connect→Authentiation→PublicKey→Properties→Create Identity File,Key选择RSA;Passphrase可以不同于密码,任意的字符串即可;Key length in为加密长度,可为512到2048位,要是在linux上可配置4096;下一步为生成过程,需要不停在进度条附近晃动鼠标,选择在x:\%USERPROFILE%\Application Data\VanDyke下生成两个文件,并且格式为Openssh Key format,要是选默认的Standard Public Key and VanDyke Private Key可能还需要格式转换或有兼容问题,公钥Identity.pub和私钥Identity。 然后在opensuse上要使用密钥方式登陆的的用户目录下建立.ssh目录,这里我偷懒直接运行ssh-keygen工具创建本机密钥会自动创建.ssh目录并设置合适目录权限。
% V% V4 ^: `2 }( m' j6 V1 b# D lxuser@suse10:/etc/ssh> ssh-keygen
( x Q7 r) M$ W8 w* a: ?0 G& z Generating public/private rsa key pair.7 A% J- Z4 ]7 ?& a
Enter file in which to save the key (/home/lxuser/.ssh/id_rsa):
3 [4 W5 F4 Y" o R3 l7 F Created directory '/home/lxuser/.ssh'.
! Y; K3 C$ _0 u' A* P9 ?) X+ V3 C Enter passphrase (empty for no passphrase):
( b2 c5 q8 M, A) n. c Enter same passphrase again:
/ Y3 k' `# J. \9 F Your identification has been saved in /home/lxuser/.ssh/id_rsa.# }+ [3 n; A9 r, x6 v
Your public key has been saved in /home/lxuser/.ssh/id_rsa.pub.( e9 x0 v4 d( S1 e7 s
The key fingerprint is:
* n- ~. I6 N, g, ]+ X& g* y5 ]& W d8:07:b9:d6:f9:4d:0c:e3:c7:8c:82:f4:a3:20:71:f4 lxuser@suse107 i/ V: B9 j# P- @" I* \
利用sftp或其他方式将公钥Identity.pub上传到刚建立好的.ssh目录里,修改文件名为authorized_keys2,这是因为使用的是authorized_keys这个文件,而用的ssh版本为2(openSUSE默认也仅使用Protocol 2).0 s {1 Q: V* Y
lxuser@suse10:~/.ssh> mv Identity.pub authorized_keys2
5 X2 w* ~% Q/ S/ }; ] 为安全起见,修改该文件的访问权限,保证除属主外没人能修改8 {: M/ d1 ~3 V! u: X
lxuser@suse10:~/.ssh> chmod 600 authorized_keys2: A1 b) t6 ?4 B7 o- ?. T% j
lxuser@suse10:~/.ssh> ll
! I5 \. A$ u. f 总计 161 ~; K+ W v3 `; v) |
-rw------- 1 lxuser users 234 11-02 20:20 authorized_keys2
, |! Y6 Z' J, X# B$ f -rw------- 1 lxuser users 1743 11-02 19:23 id_rsa
+ B8 ~8 s9 O; G: L8 W5 o1 K -rw-r--r-- 1 lxuser users 395 11-02 19:23 id_rsa.pub
" c4 y; c) v1 S 再回到SecureCRT,在Quick Connect→Authentiation处仅勾选PublicKey,并设置属性Properties,指定Use identity or certificate file为私钥Identity,确定后连接,正常的话会提示输入前面设置的Passphrase,若成功则直接登陆了。( B$ a% x0 W! U6 g7 P* F: f
Last login: Fri Nov 2 20:38:21 2007 from printer.mshome.net \' [: t) L! |5 X/ h% ^5 N- }
Have a lot of fun...! Z; n& Q) o+ Y3 W; k
至此任务算基本成功了。既然已经成功使用了ssh的RSA功能,那么索性让openssh只支持RSA验证,否则既支持普通密码又支持RSA就没什么意思了,根本没把安全提高。 修改ssh_config配置文件) O! c+ ~/ u* m8 V
lxuser@suse10:/etc/ssh> vi ssh_config/ |- z. `' q1 {2 |0 Q* U+ z: Z
取消密码登陆验证
7 k) m7 i; u. k! e$ @( F! `" h/ S) c PasswordAuthentication no- O7 I# \& _0 {
然后重启sshd服务再次尝试用键盘和密码交互登陆,就提示不成功了,而使用PublicKey是方便了许多,免去了反复输入密码的麻烦,安全较高(不过要是客户端宿主机本身不安全,那后果也就......)。
9 i* w1 s1 e# Y( j9 [: o suse10:/etc/ssh # vi ssh_config
/ m6 y6 }5 v) X) P9 N" R suse10:/etc/ssh # rcsshd restart
- G8 @/ W) Z7 v7 h Shutting down SSH daemon done
- q ]; s9 G1 m! z Starting SSH daemon done |