RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1308273
Accepted
kaylil_01
kaylil_01
Asked:2022-07-24 03:08:43 +0000 UTC2022-07-24 03:08:43 +0000 UTC 2022-07-24 03:08:43 +0000 UTC

SSH 如何使用私钥文件?

  • 772

据我了解,ssh 的简化工作如下:

  1. 服务器发送其公钥以建立信任或匹配,以防过去的连接
  2. 使用两者的公钥创建对称预共享密钥。
  3. 客户端发送其公钥以检查它是否存在于 authorized_keys
  4. 如果找到密钥,它会使用客户端的公钥加密一些秘密。
  5. 客户端使用 private 解密并将秘密发送到服务器,服务器对其进行检查。

但是,比如说,同一个亚马逊发布的 .pem 文件,两个密钥都包含,但是您需要连接的机器没有想要加入的机器的公钥,ssh 是如何工作的在这种情况下?只是跳过第三步的第二部分?

linux
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    Fat-Zer
    2022-07-24T14:59:55Z2022-07-24T14:59:55Z

    据我了解,ssh 的简化工作如下:

    这不太对:

    1. 首先,有服务器版本的交换和对加密算法的支持。
    2. Diffie-Hellman密钥交换。无需赘述,这K将为两个节点生成一个共享密钥。这仅使用临时密钥(即那些仅用于获取共享密钥然后立即销毁的密钥)并且不需要通过开放通道发送密钥。
    3. 根据秘密(K_ _ _HHS
    4. 客户端根据其数据库或以其他方式检查HS服务器的公钥,并使用服务器的密钥对其进行签名,如果出现问题,它会显示一条消息并断开连接。

    服务器和客户端之间的所有进一步通信都使用密钥加密H(更准确地说,使用在其基础上获得的应用对称密钥)。

    1. 接下来,服务器提供客户端身份验证方法(取决于设置):通过密钥、通过密码等。
    2. 如果客户选择了密钥认证,那么他发送他的公钥,并用他的私钥签署他的消息。
    3. 服务器使用发送的公钥检查消息签名,并检查其数据库中是否存在此密钥 ( authorized_keys) 并决定是否允许连接。如果没有,它可能会提供另一种身份验证方法;例如,通过不同的密钥或密码。

    那些。有以下重要区别:

    • 服务器密钥对(在 中/etc/ssh/)和客户端密钥对(在 ~/.ssh/` 中)都仅用于身份验证,本身不用于加密。
    • 为了建立安全连接,首先使用临时密钥,这些密钥在连接建立时生成,然后立即销毁。
    • 秘密不被转发。每个节点独立生成它。
    • 对于它的认证,节点用它的私钥对某个字符串进行签名,第二方验证这个签名。没有加密检查。

    有用的链接

    • 关于初始 ssh 握手的一篇好文章(翻译)
    • RFC4552:SSH 身份验证协议。
    • 3
  2. Pak Uula
    2022-07-24T12:39:24Z2022-07-24T12:39:24Z

    步骤 3 不限于公钥认证。服务器的配置文件中有一些选项sshd_config可以确定允许的身份验证方法。

    引用自man sshd_config:

    可用的身份验证方法有:“gssapi-with-mic”、“hostbased”、“keyboard-interactive”、“none”(用于在启用 PermitEmptyPasswords 时访问无密码帐户)、“password”和“publickey”。

    大多数服务器允许publickey,password,keyboard-interactive. 在这种情况下,如果服务器不知道客户端的公钥,那么它将继续进行下一个身份验证方法并请求用户的密码。

    亚马逊默认禁用所有方法,除了publickey. 在这种情况下,如果用户没有服务器知道的密钥,则不会创建会话。

    你问题的第4点和第5点我不明白。

    • 1

相关问题

  • 如果 fuser -k number/tcp 没有帮助,如何在 Debian 中释放端口?

  • Ubuntu。startx 不起作用。黑屏

  • --syn 在 iptables 中有什么作用?

  • 为什么需要iso格式?

  • C程序中没有密码的sudo

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5