ssh - gcloud 计算——忽略了实例 ssh-key 元数据?
问题描述
从服务帐户 JSON 密钥开始,我尝试将一次性“foo”ssh 密钥添加到gcloud instances create
元数据,然后使用 vanillassh
和一次性密钥连接到实例。
脚本
在这里。
预期行为
在启动时,帐户守护程序将创建一个与提供的 ssh 密钥相对应的用户帐户。
观察到的行为
- 在 GCP Console 中,实例显示正确应用的 ssh 元数据。
ssh -i throwaway_private_key foo@${IP}
失败。- 实例上的日志显示:
Apr 6 16:58:34 sshkey-test-x0rmqgh7 sshd[497]: Invalid user foo from 209.6.197.126 port 39792
如何正确触发帐户守护程序?
如果不通过元数据,那又如何?
谢谢!
解决方案
对于任何在类似问题上苦苦挣扎的人,有一个巨大的陷阱os-login
可能导致问题行为。
简而言之,os-login="TRUE"
可以(并且很可能)在 GCE 上设置项目范围。如果是这种情况,则ssh-key
忽略元数据。我只是在阅读 Google 错误跟踪器中的其他问题时偶然发现了这一点。
一旦我切换os-login
,我的问题就消失了。
推荐阅读
- java - java - 如何在java中的非数组网格中填充正方形?
- javascript - 从动态创建的子组件更改状态 - React
- react-native - 安装 Camera 和 react-native-qrcode-scanner 时出错(构建失败并出现异常)
- angular - 下拉选择选项上的样式字体
- angular - Angular 8 和链式 observables
- sharepoint-online - 如何从术语集中加载所有托管元数据值
- google-apps-script - 如何将字符串转换为小写字符串?
- ruby-on-rails - 如何向 has_many 关联添加更有意义的错误消息?
- asp.net - “TextBox”类型的控件“windowMasterSearchBox”必须放在带有 runat=server 的表单标签内
- spring-boot - 将 java_opts 传递给 Kubernetes 中的 Spring Boot 应用程序