• 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 这个档案中!哈哈!成功!

  • 相关阅读:
    关于消息队列的使用
    关于Redis中交互的过程
    关于Redis的启动过程
    【分布式】Zookeeper与Paxos
    【分布式】Chubby与Paxos
    【分布式】一致性协议
    【分布式】分布式架构
    【知识积累】try-catch-finally+return总结
    【面试】判断一棵二叉树是否为二叉排序树
    【面试】用两个栈实现队列
  • 原文地址:https://www.cnblogs.com/hdk1993/p/4355572.html
Copyright © 2020-2023  润新知