我对所有 ssh 安全的东西感到很困惑。我正在尝试重新配置一个目前因未知原因而损坏的系统。机器 A 是您在家时使用的个人计算机。机器 B 是 HPC 集群的头节点,所有其他机器 C 都是配置相同的机器,它们共享机器 B 的主目录。如果您还没猜到的话,这是一个 HPC 集群。我如何在任何节点 B 或 C 之间配置无密码 ssh。A 只能通过 ssh 进入 B 才能到达 C
答案1
- 配置从 A 到 B 的无密码。
- 启动 SSH 代理,将您的私钥加载到其中。
- 如果你使用 GNOME,很可能它已经启动了代理。使用以下方法测试
ssh-add -l
- OpenSSH 用于
eval ssh-agent
启动代理并ssh-add
加载密钥。 - PuTTY 有 Pageant。
- 如果你使用 GNOME,很可能它已经启动了代理。使用以下方法测试
- 在您的 SSH 客户端中启用代理转发。
- 在 OpenSSH 中,
ssh -A ...
为一次性配置,ForwardAgent
在~/.ssh/config
为持久配置。将其放在Host machine_b
或Host *
- PuTTY 有它连接 -> SSH -> 认证
- 在 OpenSSH 中,
- 从 A 连接到 B,并验证 B 是否可以访问您在 A 中加载的密钥。
ssh-add -l
应该列出相同的键。
使用相同的密钥设置 C 以进行无密码身份验证。- 如果 B 和 C 共享主目录,则可能不需要 #5。
- 从 A 连接到 B 并通过 B 连接到 C。
答案2
不确定您是否要指定它仅当您来自 A 时才有效?
grawity 的答案可能在安全性方面更好,但这里有一个关于设置速度和/或从多个工作A的。。
总的来说……“机器 C 都是相同配置的机器,共享主目录机器 B”
ssh-keygen
ssh-copy-id localhost
或者...
ssh-keygen
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
这意味着 B 或 C 上的任何人...(或任何有权访问该主目录的 .ssh/ 的机器)都能够随意在它们之间进行 ssh,而我认为 grawity 要求您来自 A,并已适当地设置该机器。