SSH登录使用RSA证书认证代替密码

当您在Linux下使用cvs命令时,每交提交、查询状态、更新等操作都要输入密码,实在是不方便。有没有办法不输入密码?

当然,SSH的支持多种认证方式,我们可以使用公钥和私钥的方式来认证。下面来介绍具体的做法,假设两台Linux服务器:server1和server2,我们以用户dboper为例(即两台服务器上均创建有dboper用户)。

在server1上,以dboper登录。执行如下命令:

ssh-keygen -d

Generating public/private dsa key pair.

Enter file in which to save the key (/home/wuysh/.ssh/id_dsa): (采用缺省值,回车)

Enter passphrase (empty for no passphrase): (不用密码了,回车)

Enter same passphrase again: (回车)

Your identification has been saved in /home/wuysh/.ssh/id_dsa.

Your public key has been saved in /home/wuysh/.ssh/id_dsa.pub.

The key fingerprint is:

b2:a4:92:12:7f:15:9b:89:48:2a:7c:3a:d6:17:ea:ab dboper@localhost.localdomain

这样,在用户的.ssh目录下生成如下两个文件:

id_dsa

id_dsa.pub

在用户的.ssh目录下,将id_dsa.pub复制一份成 authorized_keys2 文件, 并将 authorized_keys2 的属性改为 600 即文件所属用户有读和写的权限,组用户和其它用户禁止读写。

cp id_dsa.pub authorized_keys2

chmod 600 authorized_keys2

然后在server2上,也以dboper登录,也执行上面的一次操作。

这样,两台服务器上都生成了用户的公钥和私钥,接下来就是进行互相认证了。即把公钥放到对方服务器。

server2信认server1,即server1登录server2不用输入密码:

复制server1上的id_dsa.pub到server2(不要覆盖server2上的id_dsa.pub),复制成id_dsa.pub_server1。然后将id_dsa.pub_server1的内容添加到server2上的dboper用户.ssh目录下的authorized_keys2文件中

cat id_dsa.pub_server1 >> authorized_keys2

OK,现在你在server1上以dboper用户来登录server2,将不再需要密码了。

ssh dboper@server2

立即进入,没有密码输入提示了。

如果要在server1上信认server2,按上面的方法,把server2上的id_dsa.pub中的内容添加到server1上用户.ssh目录下的authorized_keys2文件中。