ssh-keygen实现免密码登陆
- 在 Client 端建立 Public 与 Private Key :
建立的方法真的是简单到不行!直接在 192.168.0.100 这个 Client 上面,以 test2 这个账号,使用 ssh-keygen 这个指令来进行 Key 的产生即可!不过,需要注意的是, version 1 与 version 2 使用的密码演算方式不同,此外, version 2 提供两个密码演算的方法,我们这里仅针对 version 2 的 RSA 这个演算方法进行说明!
[test2@test2 test2]$ ssh-keygen -t rsa <==这个步骤在产生 Keys [test2 @test2 test2]$ ll ~/.ssh |
- 请注意上面喔,我的身份是 test2 ,所以当我执行 ssh-keygen 时,才会在我的家目录底下的 .ssh/ 这个目录里面产生所需要的两把 Keys ,分别是私钥(id_rsa)与公钥(id_rsa.pub)。另外一个要特别注意的就是那个 id_rsa 的档案权限啦!他必须要是 -rw------- 才好!否则内容被人家知道了,那么您的 Keys 不就有可能外泄了?所以请特别留意他的权限喔!那么那个 id_rsa.pub 则是『公钥!』这个档案必须要被放置到 Server 端才行!
- 在 Client 端放置私钥:
在预设的条件中,我们的私钥必需要放置在家目录底下的 .ssh 里面,那么如果是 version 2 的 RSA 算法,就需要放置在 $HOME/.ssh/id_rsa 当中!咦!刚好使用 ssh-keygen 就是已经产生在这个目录下了,所以自然就不需要去调整他了!以我的 test2.linux.org 来看,那么我的档案就会放置在 /home/test2/.ssh/id_rsa 这个档案就是私钥啦!
- 在 Server 端放置可以登入的公钥:
既然我们要让 test2 可以以 test 这个账号登入 test.linux.org 这部主机,那么这部主机自然需要保有 test2 的 public key 啰!对的!所以我们必需要将 Client 端建立的 id_rsa.pub 档案给他拷贝到 test.linux.org 里头的 test 这个使用者的家目录之下!那么如果您还记得上面的 sshd_config 这个档案的设定的话,那么应该就记得『AuthorizedKeysFile』这个设定吧!是的!在被登入的主机的某个账号,他的公钥放置的文件名称预设就是这个项目所记载的!而他预设的档名就是 authorized_keys 这个文件名称啦!那么应该怎么做呢?
1. 先在 Client 端以 sftp 将公钥丢到 test 上面去! 2. 到 Server 上面,将公钥转存到 authorized_keys 档案中! |
- 请注意上面的机器!由于 authorized_keys 可以保存相当多的公钥内容,因此,可以使用 >> 的方式来将 Client 端的公钥新增到该档案内!呵呵!做完这一步一后,未来 test2 就可以直接在 test2.linux.org 以
[test2@test2 test2]$ ssh test@test.linux.org |
- 这样就可以不需要输入密码啰!但是请注意, test 不能以 test2 登入 test2.linux.org 喔!
很简单的步骤吧!这样一来,就可以不需密码的手续了!无论如何,您要记得的是, Server 需要有的是 Public Keys ,而 Client 端的则是 Private Keys !则未来,当您还想要登入其它的主机时,只要将您的 public key ( 就是 id_rsa.pub 这个档案 )给他 copy 到其它主机上面去,并且新增到某账号的 .ssh/authorized_keys 这个档案中!哈哈!成功!