1. 配置sshd允许public key登录

# vi /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# /etc/init.d/sshd restart  # for Linux

# /etc/rc.d/sshd restart   # for FreeBSD


2. 生成密钥对

方法一(由服务器生成密钥对)

在服务器中执行:
# ssh-keygen -t dsa 



可得到两个文件,id_dsa是私钥,id_dsa.pub是公钥:
~/.ssh/id_dsa 
~/.ssh/id_dsa.pub 

复制这两个文件到本地,保存到 SecureCRT 的安装目录的 sshkeys 子目录中,或者其它自己认为合适的目录。


方法二(由SecureCRT生成密钥对)

(1) 在SecureCRT中打开“会话选项(Session Options)”;
(2) 在“分类(Category)”中选择SSH2;
(3) 在右边的“身份验证(Authentication)”中选择“公钥(Publickey)”;
(4) 然后点击旁边的“属性(Propertites)”按钮;
(5) 选择“使用会话公钥设置(Use session public key setting)”;
(6) 在“使用身份文件(Use identify file)”下面,选择“创建身份文件(Create Identity File...)”;
(7) 点击“下一步”,选择“DSA”,生成“Identity”和“Identity.pub”两个文件;
(8) 复制Identity.pub文件到服务器,放到home目录的.ssh子目录下,并执行命令:
# ssh-keygen -X -f Identity.pub > authorized_keys


3. 配置SecureCRT使用公钥认证

(1) 在SecureCRT中,打开会话选项;
(2) 在“分类(Category)”中选择 SSH2;
(3) 在右边的“身份验证(Authentication)”中选择“公钥(PublicKey)”;
(4) 点击旁边的“属性(Properites)”,选择“使用会话公钥设置(Use session public key setting)”;
(5) 在“使用身份文件(Use identify file)”的输入框中,选择之前生成的 id_dsa 或者 Identity;
(6) 注意:id_dsa 和 id_dsa.pub,或者 Identity 和 Identity.pub 要保存在一起,并符合 keyname 和 keyname.pub 的对应格式);


4. 测试

重新用 SecureCRT 连接一下试试,能够直接登录就好了! 


5. 取消sshd密码认证方式

# vi /etc/ssh/sshd_config 
PasswordAuthentication no

# /etc/rc.d/sshd restart

注意一般连接两个Session,一个用于修改并验证是否成功,另一个备用,以便修改失误时用以恢复。