用户尝试连接到 Google Compute Engine VM 实例上的 SFTP 时互相“覆盖”

用户尝试连接到 Google Compute Engine VM 实例上的 SFTP 时互相“覆盖”

我遇到了奇怪的事情。我在 gCloud 中设置了 Compute Engine VM 实例。我已经设置了所有内容,包括类似于以下位置所述的 SFTPhttps://devtidbits.com/2011/06/29/implement-a-sftp-service-for-ubuntudebian-with-a-chrooted-isolated-file-directory/

我创建了 2 个不同的用户,他们具有不同的用户 ID,属于同一组(用于 SFTP 使用)。然后我为每个用户创建了公钥/私钥 SSH 密钥对(如在https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys)。

然后我尝试了两个完全相同的场景,具有相同的设置,只是在两个不同的级别 - 在项目级别设置元数据(https://console.cloud.google.com/compute/metadata/sshKeys?project=PROJECT_ID)以及编辑实例页面(实例级别)上的虚拟机实例键(https://console.cloud.google.com/compute/instancesDetail/zones/europe-west1-b/instances/[INSTANCE_NAME]?project=[PROJECT_ID]&graph=GCE_CPU&duration=PT1H)。它们两个都应该可以工作。

使用项目级别的元数据:

  1. 我将第一个公钥(假设是 User1 的公钥)添加到项目元数据中,并尝试使用 User1 的用户名和私钥连接 FileZilla。一切正常。
  2. 我添加了第二个公钥(假设是 User2 的公钥),并尝试使用 User2 的用户名和私钥连接 FileZilla。一切正常。
  3. 我尝试使用 User1 的用户名和私钥再次连接 FileZilla。没有连接(错误:断开连接:没有可用的受支持的身份验证方法(服务器发送:公钥)。错误:无法连接到服务器)
  4. 在 gCloud 设置中删除了两个公钥。

在编辑实例页面上使用虚拟机实例的密钥:- 同样的情况,没有运气

  1. 我将第一个公钥(假设是 User1 的公钥)添加到实例设置,并尝试使用 User1 的用户名和私钥连接 FileZilla。一切正常。
  2. 我添加了第二个公钥(假设是 User2 的公钥),并尝试使用 User2 的用户名和私钥连接 FileZilla。一切正常。
  3. 我尝试使用 User1 的用户名和私钥再次连接 FileZilla。没有连接(错误:断开连接:没有可用的受支持的身份验证方法(服务器发送:公钥)。错误:无法连接到服务器)
  4. 在 gCloud 设置中删除了两个公钥。

我一直打开 FileZilla(也尝试在步骤 2 和步骤 3 之间重新启动 FileZilla),但问题仍然存在。由于每次我都可以使用设置公钥的用户连接到 SFTP最后的,我不认为FileZilla本身存在问题。

好像我不能使用多个用户。真的不知道我还能做什么……有什么建议吗?

顺便说一句,我尝试了类似的方案,尝试用 Putty 连接到 SSH,但同样——每次我都只能与我在 gCloud 设置中设置公钥的用户连接最后的

答案1

我们通过这个 Google 群组得出结论讨论,在重现此行为失败后,检查了您的用例,发现此行为是由于您在 Linux 实例中实施的自定义配置造成的,具体方法是遵循此第三方关联以便使用“chroot 的、隔离的文件目录”进行无 shell(SSH)访问的 SFTP。

根据此文档由于来宾环境不会修改非 Google 管理的用户帐户,因此同时使用 Google Compute Engine 管理 SSH 密钥并手动将用户添加到实例是不可取的,并且可能会导致冲突。此外,更改 SSH 守护程序设置和用户主目录会增加另一个复杂性。可以查看讨论的完整摘要这里

相关内容