假如你Linux Client是客户端, Server为服务器,用户名为user。现在要配置从Client到Server的无密码SSH登录。

1:在Client上产生一对密钥,执行ssh-keygen命令,需要输入的地方直接回车,接受缺省值即可,输出如下:

[user@Client .ssh]$ ssh-keygen -d
Generating public/private dsa key pair.


 

Enter file in which to save the key (/home/user/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
22:0c:2e:64:09:2e:a9:f1:37:c5:ee:d9:e5:57:92:b4 user@Client

这时候,在/home/user/.ssh目录下,存有一对密钥id_dsa和id_dsa.pub。

2:当公钥id_dsa.pub以任何方式上传到Server上,如:

[user@Client .ssh]$ scp id_dsa.pub Server:/home/user

3:登录到Server上,执行以下命令

cat id_dsa.pub >> /home/user/.ssh/authorized_keys

这样就完成了配置,此时从Client登录Server,就无需输入密码了。这种方式是安全的,你完全不用担心别人从其它机器上也可以无密码登录Server。这个基本原理是这样:

你在client上产生的id_dsa和id_dsa.pub是一对密钥,只有用私钥id_dsa才能解开公钥id_dsa.pub。现在你把公钥存在服务器上,你登录服务器的时候,服务器会给提供经过公钥id_dsa.pub(其内容存在authorized_keys里)加密的数据让你解密,你的机器上用id_dsa这把私钥,去解密,解开之后Server放行。而别人的机器上没有id_dsa这个私钥,自然无法解密,从而无法无密码登录了。

当然,你要保证你机器上的私钥的安全。否则,如果别人取得了你的私钥,就好比别人取得了你房间的钥匙,然后就可以拿去开你家房门了