公钥如何“发送”到服务器,私钥如何“用于”SSH?

use*_*622 11 linux ssh public-key-encryption

有两台 Linux 机器,A 和 B。在 A 上运行的脚本需要能够通过 SSH 连接到 B。所以 A 生成一个公钥(可能是一个ssh-keygen-generated id_rsa.pub),然后使用其各自的私钥(再次,可能id_rsa)来制作那个 SSH 连接。

如果我上面说的有任何不正确或误导,请首先纠正我!

假设我或多或少有目标:

  • A 如何“给”B 其公钥 ( id_rsa.pub)?这必须是手动过程,还是可以自动化?如果手动,流程是什么?如果是自动的,命令是什么?当 B “得到”这个公钥时,它会去哪里或被存储在哪里?
  • 当发起到 B 的 SSH 连接时,A 如何“使用”它的私钥 ( id_rsa) 作为该连接的一部分?

Bam*_*kie 5

ssh-keygen生成公钥和私钥,它们最初只驻留在本地。将公钥提供给另一台主机是用户需要手动执行的操作,可以将其发送给负责服务器 B 的人员,或者如果您有一个带有密码的帐户,您可以自己登录并把它放在那里。为了允许无密码登录服务器 B,您需要将您的公钥添加到服务器 B 上的 ~/.ssh/authorized_keys 文件(每行一个公钥,该文件中可以有任意数量的密钥)。有一个 linux 命令ssh-copy-id可以为您复制 ID 并将其放入文件中。

默认情况下,ssh 将使用文件 ~/.ssh/id_XXX 作为您的私钥。XXX 可以是 rsa、dsa 或任何为其生成密钥的协议。IIRC,dsa 是旧的,不应使用。如果要使用不同的私钥,可以在 ssh 命令中使用-i. 只要使用的私钥与远程机器上的公钥匹配(在您登录的用户帐户的authorized_keys 文件中),您就不需要提供密码。

  • @user3178622 re '1' 我面前没有它,但它看起来像`~/.ssh/id_rsa` re '2',ssh-add 不是用于添加到authorized_keys,而是用于添加到钥匙串.. 我还没有使用过 ssh-add。ssh-add 是为了让您不必每次使用需要关键短语的密钥时都输入关键短语。因此,如果您的 ssh 密钥不需要关键短语,那么我想没有任何理由使用 ssh-add,我认为您仍然需要使用 ssh-copy-id 或手动将公钥复制到授权密钥 (2认同)
  • ssh-keygen 会询问你保存文件的位置,但默认位置在 ~/.ssh/ ssh-copy-id 将公钥复制到远程主机。ssh-add 将私钥添加到您的本地密钥环。将私钥添加到本地密钥环意味着在尝试 ssh 连接时将默认检查它(即,无需使用 -i 指定它)。 (2认同)