配置 ssh 无密码登录
假设 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 这个私钥,自然无法解密,从而无法无密码登录了。 当然,你要保证你机
器上的私钥的安全。否则,如果别人取得了你的私钥,就好 比别人取得了你房间的钥匙,然后就可以拿去开你家房门了。