我想肯定有不少朋友在使用 SecureCRT 做为 SSH 的客户端软件,但都很少使用他的 RSA/DSA 加密功能吧,怎么你还不知道 RSA 是什么?

SSH,特别是 OpenSSH,是一个类似于 telnet 或 rsh,ssh 客户程序也可以用于登录到远程机器。所要求的只是该远程机器正在运行 sshd,即 ssh 服务器进程。但是,与 telnet 不同的是,ssh 协议非常安全。加密数据流,确保数据流的完整性,甚至安全可靠的进行认证它都使用了专门的算法。

然而,虽然 ssh 的确很棒,但还是有一个 ssh 功能组件常常被忽略、这个组件就是 OpenSSH 的 RSA/DSA 密钥认证系统,它可以代替 OpenSSH 缺省使用的标准安全密码认证系统。

OpenSSH 的 RSA 和 DSA 认证协议的基础是一对专门生成的密钥,分别叫做专用密钥和公用密钥。使用这些基于密钥的认证系统的优势在于:在许多情况下,有可能不必手工输入密码就能建立起安全的连接。

好了知道 RSA和DSA 是怎么回事了吧,至于里面的原理我就不讲了,有兴趣的朋友去看看公匙密匙的原理就行。其实不止 SecureCRT 支持 RSA/DSA,其他ssh的客户端软件都支持类似的 RSA/DSA,只不过好像不同软件产生的公匙密匙好像不通用。我这里只是拿最典型的 SecureCRT 来说明 RSA怎么使用来配合l inux 下的 ssh 服务

我的环境:CentOS4.4   openssh-3.9p1-8   SecureCRT 5.1

服务端 openssh 我们先不可以设置,等客户端设置好后,我们再回过头来设置 ssh。


(1.)首先产生 SSH2 的秘匙对,我选择使用 RSA 1024 位加密。(如下图)

 

(2.)

 

(3.)在选择密钥类型时,选择 RSA 方式。(如下图)

 

(4.)输入一个保护您设定的加密密钥的通行短语。(如下图)

 

(5.)在密钥的长度(位)中,使用默认的 1024 位加密即可。(如下图)

 

(6.)系统开始生成密钥。(如下图)

 

(7.)为生成的密钥选择一个文件名和存放的目录(可以自行修改或使用默认值)。(如下图)

 

到此为止,使用客户端 SecureCRT 生成密钥已经完成。接下来,就是要将密钥文件上传至服务器端,并
在服务器端导入密钥。

比如我这里要用 root 帐户使用 SSH2:

mkdir /root/.ssh
chmod 700 /root/.ssh

把之前生成的后缀名为 pub 的密钥文件传到 linux 服务器上,如果你已经在用 SecureCrt,可以参考《SecureCRT 来上传和下载数据》并开始导入:

ssh-keygen -X -f Identity.pub >> /root/.ssh/authorized_keys2

完成后,在 /root/.ssh/ 下面就会多出一个 authorized_keys2 文件。这个就是服务器端的密钥文件。

(8.)在 SecureCRT 客户端软件上新建一个 SSH2 连接。(如下图)

协议上,选择 SSH2
用户名,输入 root

 

(9.)因为,我们是要让服务器使用 RSA 方式来验证用户登陆 SSH,因此在“身份验证”一栏中,我们只
选择“公钥”方式,然后点击右边的“属性”按钮。(如下图)

 

(10.)在出现的“公钥属性”窗口中,找到“身份或证书文件”,(即上面第7步骤中生成的密钥文件)

 

(11.)整个通过 RSA 密钥方式验证用户登陆 SSH 的步骤,就完成了。但接下来,为了服务器的安全,我们
还需要修改 SSH2 的配置文件,让其只能接收 RSA 密钥方式验证用户。(即取消口令认证)

vi  /etc/ssh/sshd_config

RSAAuthentication yes                # 启用 RSA 认证
PasswordAuthentication no        # 不使用口令认证

/etc/rc.d/init.d/sshd restart

/usr/sbin/useradd -u 800 -G wheel -m testuser