我的要求很简单。我已经在服务器上生成了 SSH 密钥对(公共和私有)“A”。现在,我已在 AWS IAM 中上传了公共 SSH 密钥,并生成了 SSH 密钥 ID 以通过 SSH 连接到 CodeCommit 存储库。在服务器“A”中更新".ssh/config"
SSH 密钥 ID 的值和私钥文件的路径后,我应该能够成功连接到存储库,并且我也能够做到这一点。现在我的要求是当我尝试从另一台服务器连接到存储库时“B”(私钥已传输到服务器,文件.ssh/config
也更新为与服务器“A”中相同)我不应该能够连接,即密钥对应该仅在它生成的服务器中工作,并且不允许来自任何服务器的连接其他服务器。这可能吗?谷歌搜索后我找不到任何可靠的东西。
答案1
authorized_keys
如果遥控器使用常用文件,则可以。
这sshd(8)
手册页描述authorized_keys
文件格式。该文件中可以使用许多选项,其中之一是:
from="pattern-list"
指定除了公钥身份验证之外,远程主机的规范名称或其 IP 地址必须出现在以逗号分隔的模式列表中。请参阅中的模式
ssh_config(5)
有关模式的更多信息。
因此,这样的行只允许来自以下位置的访问hosta.example.org
:
from="hosta.example.org" ssh-rsa AAAA...== [email protected]
尽管我不确定为什么您不为两个客户端主机 A 和 B 创建不同的密钥。这将使控制哪个主机有权访问何处变得非常容易 - 密钥将与主机绑定。
答案2
这是不可能的,因为您已将私钥添加到服务器的 B ssh 配置中。但是,您可以通过其他方式限制对 A 服务器的访问,例如防火墙规则仅允许来自一个 IP 的 ssh 连接。