假如你Linux Client是客户端, Server为服务器,用户名为user。如今要配置从Client到Server的无密码SSH登陆。安全
1:在Client上产生一对密钥,执行ssh-keygen命令,须要输入的地方直接回车,接受缺省值便可,输出以下:服务器
[user@Client .ssh]$ ssh-keygen -d
Generating public/private dsa key pair.ssh
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@Clientide
这时候,在/home/user/.ssh目录下,存有一对密钥id_dsa和id_dsa.pub。加密
2:当公钥id_dsa.pub以任何方式上传到Server上,如:spa
[user@Client .ssh]$ scp id_dsa.pub Server:/home/userit
3:登陆到Server上,执行如下命令io
cat id_dsa.pub >> /home/user/.ssh/authorized_keysclass
这样就完成了配置,此时从Client登陆Server,就无需输入密码了。这种方式是安全的,你彻底不用担忧别人从其它机器上也能够无密码登陆Server。这个基本原理是这样:登录
你在client上产生的id_dsa和id_dsa.pub是一对密钥,只有用私钥id_dsa才能解开公钥id_dsa.pub。如今你把公钥存在服务器上,你登陆服务器的时候,服务器会给提供通过公钥id_dsa.pub(其内容存在authorized_keys里)加密的数据让你解密,你的机器上用id_dsa这把私钥,去解密,解开以后Server放行。而别人的机器上没有id_dsa这个私钥,天然没法解密,从而没法无密码登陆了。
固然,你要保证你机器上的私钥的安全。不然,若是别人取得了你的私钥,就比如别人取得了你房间的钥匙,而后就能够拿去开你家房门了