【问题标题】:How to gain SSH access from an AWS instance to another without private key?如何在没有私钥的情况下获得从 AWS 实例到另一个实例的 SSH 访问权限?
【发布时间】:2016-01-19 18:53:26
【问题描述】:

我有一个 SSH 密钥对:私人生活在我的本地 Mac 上,公共生活在几台 AWS 云机器上。

在我的 Mac 上,我可以通过 SSH 连接到云实例,称之为“部署服务器”。从那里,我需要将我的应用程序部署到多个实例(我无法在本地部署)。

我使用我的私钥对其他实例进行身份验证。我可以通过将我的私钥留在部署服务器上(不安全)或 SSH 代理转发(可能不会更好)来做到这一点。

此外,部署需要一段时间,所以我在 gnu 屏幕或 tmux 会话中进行;然后我只是分离并结束与部署服务器的 SSH 会话,这意味着我不能使用 SSH 代理转发(因为我相信它需要 SSH 连接保持打开状态)。

我还有哪些其他选择?

【问题讨论】:

  • 如果你必须通过 git 部署,为什么不直接从你的 Mac 推送到服务器而不是从 github 拉取?
  • 几个原因:1)脚本在本地(在Linux服务器上)构建二进制文件,其中一些是特定于平台的;所以我不能在我的 Mac 上这样做。 2) 我的本地机器和我的服务器之间的连接不够可靠。 3) 我希望能够在部署时关闭我的笔记本电脑、移动位置等

标签: github deployment ssh ssh-keys gnu-screen


【解决方案1】:

您可以使用deploy key。这是一个特定于服务器的密钥,对存储库具有只读访问权限。

要使用它,您需要:

  • 为服务器生成私钥(服务器上的ssh-keygen
  • 在 github 存储库中将其设置为部署密钥 (https://github.com/<user>/<repo>/settings/keys)。这将授予 repo 只读权限。如果您还需要对它的写入权限,则可以使用复选框。

阅读此github help 指南的更多信息。在那里您可以看到更多从访问存储库的服务器进行部署的方法。

【讨论】:

  • 我已经澄清了我的问题。我不能在服务器上留下任何私钥,以免被泄露。
  • 部署密钥只有对 repo 的读取权限。如果它被泄露,人们只能看到你的源代码。而且,如果他们设法访问了密钥,那么他们肯定也可以访问存储源的本地目录。
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2020-05-29
  • 2016-04-16
  • 2020-03-26
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多