Linux环境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文件中。