zoukankan      html  css  js  c++  java
  • 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
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/test2/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase): <==这里按 Enter
    Enter same passphrase again:            <==再按一次 Enter
    Your identification has been saved in /home/test2/.ssh/id_rsa. <==这是私钥
    Your public key has been saved in /home/test2/.ssh/id_rsa.pub.<==这是公钥
    The key fingerprint is:
    c4:ae:d9:02:d1:ba:06:5d:07:e6:92:e6:6a:c8:14:ba test2@test2.linux.org
    注意: -t 指的是『使用何种密码演算方式?』由于我们使用 RSA ,
    所以直接输入 -t rsa 即可建立两支 Keys !
    此外,建立的两把 Keys 都放置在家目录下的 .ssh 这个目录中!
    察看一下这两把 Keys 吧!

    [test2 @test2 test2]$ ll ~/.ssh
    total 12
    -rw-------    1 test2    test2         887 Nov 12 22:36 id_rsa
    -rw-r--r--    1 test2    test2         233 Nov 12 22:36 id_rsa.pub
    -rw-r--r--    1 test2    test2         222 Oct 31 11:20 known_hosts

    • 请注意上面喔,我的身份是 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 上面去!
    [test2@test2 test2]$ cd ~/.ssh             <==切换目录
    [test2@test2 .ssh]$ sftp test@test.linux.org<==连到主机上面
    Connecting to test.linux.org...
    test@test.linux.org's password:                <==输入 test 的密码
    sftp> put id_rsa.pub                        <==将公钥丢到 Server 上面去!
    Uploading id_rsa.pub to /home/test/id_rsa.pub
    sftp> exit

    2. 到 Server 上面,将公钥转存到 authorized_keys 档案中!
    [test@test test]$ cd ~/.ssh
    [test@test .ssh]$ cat ../id_rsa.pub >> 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 这个档案中!哈哈!成功!

  • 相关阅读:
    hdu 2647 Reward
    hdu 2094 产生冠军
    hdu 3342 Legal or Not
    hdu 1285 确定比赛名次
    hdu 3006 The Number of set
    hdu 1429 胜利大逃亡(续)
    UVA 146 ID Codes
    UVA 131 The Psychic Poker Player
    洛谷 P2491消防 解题报告
    洛谷 P2587 [ZJOI2008]泡泡堂 解题报告
  • 原文地址:https://www.cnblogs.com/hdk1993/p/4355572.html
Copyright © 2011-2022 走看看