in cmd/core_plugin/oslogin/oslogin_linux.go [381:426]
func (mod *osloginModule) setupOpenSSH(desc *metadata.Descriptor) error {
sshdCfg := textconfig.New(mod.sshdConfigPath, osloginConfigMode, osloginConfigOpts)
block := textconfig.NewBlock(textconfig.Top)
sshdCfg.AddBlock(block)
// Determine the authorized keys command binary.
authorizedKeysCommand, err := availableBinary(mod.authorizedKeysCommandPaths)
if err != nil {
return fmt.Errorf("failed to find authorized keys command binary: %w", err)
}
if desc.SecurityKeyEnabled() {
authorizedKeysCommand, err = availableBinary(mod.authorizedKeysCommandSKPaths)
if err != nil {
return fmt.Errorf("failed to find authorized keys command binary: %w", err)
}
}
cfg := cfg.Retrieve()
certReq := desc.CertRequiredEnabled()
if certReq || cfg.OSLogin.CertAuthentication {
// Add the relevant certificate authority keys.
block.Append("TrustedUserCAKeys", defaultPipePath)
block.Append("AuthorizedPrincipalsCommand", "/usr/bin/google_authorized_principals %u %k")
block.Append("AuthorizedPrincipalsCommandUser", "root")
}
if !certReq && cfg.OSLogin.CertAuthentication {
block.Append("AuthorizedKeysCommand", authorizedKeysCommand)
block.Append("AuthorizedKeysCommandUser", "root")
}
// Add two-factor authentication configuration if enabled.
if desc.TwoFactorEnabled() {
block.Append("AuthenticationMethods", "publickey,keyboard-interactive")
block.Append("ChallengeResponseAuthentication", "yes")
twoFABlock := textconfig.NewBlock(textconfig.Bottom)
sshdCfg.AddBlock(twoFABlock)
twoFABlock.Append("Match", "User sa_*")
twoFABlock.Append("AuthenticationMethods", "publickey")
}
if err := sshdCfg.Apply(); err != nil {
return fmt.Errorf("failed to apply openssh config: %w", err)
}
return nil
}