关键问题

我有一些关于为SSH访问生成密钥的问题:

(1)假设有两台计算机运行ssh服务器服务,并且我在计算机A上生成了一对密钥文件,并将公共文件复制到计算机B.这是真的,这只是一个单向密钥:我们只给了计算机访问计算机B的权限,没有授予计算机B访问计算机A的权限? 如果我现在想从计算机B到计算机A ssh,我必须生成计算机B上的另一对密钥文件,并将公共文件复制到计算机A?

(2)如果我想将一台本地计算机连接到多台远程服务器,是否只在本地生成一对公用密钥文件,并将同一个公共文件复制到远程服务器,或者生成不同的在本地为不同的远程服务器上的密钥文件?

(3)如果我想将多台本地计算机连接到一台远程服务器上,将公用文件从不同的本地计算机复制到远程服务器时,是将它们合并成一个authorized_keys文件还是将它们存储在不同的authorized_keys文件中?

(4)如果有多台服务器通过NFS共享相同的文件系统,如何生成密钥并安排从一台服务器访问的密钥文件? 还如何仍然生成密钥和安排本地计算机的密钥文件访问任何服务器?

上面所有的机器都是Linux的。请在回复中提供示例和命令,以便我能更好地理解如何解决这些问题。

感谢致敬!

  1. 是的,情况就是这样。 具有私人钥匙的机器可以对公共一半的人进行authentication。 您当然可以在两台或多台机器上拥有相同的私钥,但是如果您没有密钥的string密码,则不应该对您不能100%信任的服务器(如外部共享服务器)执行此操作无论如何,不​​build议使用无密码键)。

  2. 在许多服务器上使用相同的公共密钥是很常见的,就像使用公钥+私钥签名电子邮件一样(每个人通常使用相同的公钥来检查来自你的私钥的签名) – 不是没有关于不可用的。 例如,我的钥匙@ homemachine可以login我的家庭服务器,我的远程服务器和几个虚拟机。 虽然我有一个不同的键@ homeserver(因为上面的注释1),但是也可以用来在别处select帐户来validation我。 也就是说,如果你愿意,没有任何东西可以阻止你为每个用户账户拥有许多私钥。

  3. 给定目标帐户的所有授权密钥都存在于一个authorized_keys文件中。

  4. 那要看。 你的主目录,或者甚至是共享(NFS)资源上的一切?

http://novosial.org/openssh/publickey-auth/是在回答一个相关问题之后,在快速search之后提出的一个资源,虽然它可能没有涵盖你的最后一点,但它在这里也很有用。 假设你使用的是OpenSSH(你不太可能),示例命令将与Linux相关。

(1)假设有两台计算机运行ssh服务器服务,并且我在计算机A上生成了一对密钥文件,并将公共文件复制到计算机B.这是真的,这只是一个单向密钥:我们只给了计算机访问计算机B的权限,没有授予计算机B访问计算机A的权限?

是。

如果我现在想从计算机B到计算机A ssh,我必须生成计算机B上的另一对密钥文件,并将公共文件复制到计算机A?

是的(尽pipe你可以使用与上面相同的密钥文件,如果A和B完全互相信任)。

(2)如果我想将一台本地计算机连接到多台远程服务器,是否只在本地生成一对公用密钥文件,并将同一个公共文件复制到远程服务器,或者生成不同的在本地为不同的远程服务器上的密钥文件?

虽然两者都可以工作,但没有理由使用多个密钥文件。 所以你的第二个select。

(3)

是的,您将所有密钥组合到一个authorized_keys文件中。

(4)如果有多台服务器通过NFS共享相同的文件系统,如何生成密钥并安排从一台服务器到另一台服务器访问的密钥文件? 还如何仍然生成密钥和安排本地计算机的密钥文件访问任何服务器?

NFS对于SSH并不重要; 该文件必须在正确的位置。 生成密钥相同。

  1. 从计算机'A ”生成的一个密钥对可用于login到其他几台计算机。
    但是,您可以将密钥对从A'.ssh'目录复制到另一台计算机'B' ,然后从那里使用它(login到您允许通过这些凭据从“ A'访问的所有计算机)。
    这使得访问不太安全,因为您现在已经在两台计算机之间共享私人数据。 但是,如果这不是一个负债,它可能会起作用。
  2. 就像我上面所描述的那样, 'A''A'密钥对可以用来访问尽可能多的远程机器,通过授权每个机器上的公钥来访问。
  3. 'authorized_keys'文件可以有多个授权行(公钥),每行一个。
  4. 当您在多台计算机之间共享'home'空间时(因此在您login时共享'.ssh'目录本身),您只需要一个密钥对就可以跨该计算机池共享访问权限。 把公钥放在这个'.ssh '的authorized_keys文件中。

一些参考,

  1. OpenSSH公钥authentication
  2. 没有密码的SSH
  3. SSH用户身份 (SecurityFocus)

更新:

  • 这剑桥大学的帮助页面有一个样本authorized_keys列表。
  • 我认为不同的文件被用来存储不同的键types。
    'authorized_keys '文件将用于RSA密钥和
    DSA密钥的'authorized_keys2 '文件也许。
    有一个SecurityFocus文章描述这些文件以及其他东西。