zoukankan      html  css  js  c++  java
  • ssh配置公钥私钥登录服务器

    原理

    密码的方式的即时认证的方式 。而公私钥 是在服务器保存一份已经通过认证的加密串,登录时通过这个加密串去认证。
    公钥是可以传播的,私钥只能在自己的本地

    公私钥的工作原理, 可以参考这篇文章: SSH公钥登录(私钥认证)原理

    生成 公私钥

    有机器A,B。现想A通过ssh免密码登录到B。

    ls -al ~/.ssh
    

    检测 A主机下是否已经生成过 SSh key , 如果存在 id_rsaid_rsa.pub 的话,说明已经生成过 SSH key 了。可以直接下一步。 否则要先生成。

    使用 ssh-keygen 命令 , your-email@example.com 替换为你的邮箱。

    > ssh-keygen -t rsa -C "your_email@example.com"
    Generating public/private rsa key pair.
    

    命令行会提示让你指定秘钥的名称,按回车键将 SSH Key 保存到默认文件名即可:

    Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
    

    如果要更改路径,这里要输入绝对路径,不然就出现在根目录 / 下了。(一般不要修改,默认路径最好)

    接下来会询问你为 SSH Key 设置密码,按回车键即可,默认为空密码:

    Enter passphrase (empty for no passphrase): [Type a passphrase]
    Enter same passphrase again: [Type passphrase again]
    

    不输入,直接回车就是空密码了

    这一步的密码一定要注意 。 设置为空密码,才能免密码登录, 否则就是要密钥的密码了。 有较多新手朋友烂在了这一步 。明明设置了密钥,却还是要输入密码。就是这个原因了。

    可以都选择默认,一路 Enter 键即可.
    这个时候如果我们再使用:

    > ls -al ~/.ssh
    id_rsa id_rsa.pub known_hosts
    

    SSH 秘钥的两个文件:
    id_rsa —— SSH 秘钥的 私钥 (Private Key)
    id_rsa.pub —— SSH 秘钥的 公钥 (Public Key)

    B 主机设置公钥

    把A机下的/root/.ssh/id_rsa.pub 复制到B机的 /root/.ssh/authorized_keys文件里,先要在B机上创建好 /root/.ssh 这个目录。
    两种方式:
    一:

    ssh-copy-id root@192.168.1.181
    

    二:用scp复制。

    [root@A ~]# scp /root/.ssh/id_rsa.pub root@192.168.1.181:/root/.ssh/authorized_keys
    root@192.168.1.181's password:
    id_rsa.pub                                    100%  223     0.2KB/s   00:00
    

    由于还没有免密码登录的,所以要输入一次B机的root密码。
    需要特别注意的是:B主机的.ssh文件的所有者要是root,如果不是要改:

    chown -R root:root .ssh
    

    同时,B主机的authorized_keys文件,要是600权限的,如果不是,也要改:

    chmod 600 authorized_keys
    

    A主机使用公钥免密登录B主机的root用户

    [root@A ~]# ssh -l root 192.168.1.181
    

    第一次登录是时要你输入yes。

    现在A机可以无密码登录B机了。

    小结:登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是id_dsa,id_dsa.pub)

    想让A,B机无密码互登录,那B机以上面同样的方式配置即可。

    参考文章: https://blog.csdn.net/qq_31016531/article/details/78850162

  • 相关阅读:
    Java程序设计:最大连续1的个数(LeetCode:485)
    LeetCode刷题经验2
    LeetCode刷题经验
    Java程序设计:区域和检索—数组不可变(LeetCode:303)
    Java程序设计:在排序数组中查找元素的第一个和最后一个位置(LeetCode:34)
    解决安装python3后yum不能使用情况
    使用shell做数据库备份的时候,遇到了以下问题,原因未知
    使用windows系统编写shell代码,在linux执行后的报错
    Apache URL重写规则
    PHP中的环境变量$_ENV, $_SERVER 及getenv
  • 原文地址:https://www.cnblogs.com/ElEGenT/p/11844560.html
Copyright © 2011-2022 走看看