kubernetes/kops · error

error deleting SSH public key: %v

Error message

error deleting SSH public key: %v

What it means

RunDeleteSSHPublicKey obtains the cluster's SSHCredentialStore and calls DeleteSSHCredential, which removes the cluster's SSH public key entry. Any error from the store is wrapped as "error deleting SSH public key: %v". Note it deletes the whole SSH credential, not a key by name.

Source

Thrown at cmd/kops/delete_sshpublickey.go:81

func RunDeleteSSHPublicKey(ctx context.Context, f *util.Factory, out io.Writer, options *DeleteSSHPublicKeyOptions) error {
	clientset, err := f.KopsClient()
	if err != nil {
		return err
	}

	cluster, err := GetCluster(ctx, f, options.ClusterName)
	if err != nil {
		return err
	}

	sshCredentialStore, err := clientset.SSHCredentialStore(cluster)
	if err != nil {
		return err
	}

	if err := sshCredentialStore.DeleteSSHCredential(); err != nil {
		return fmt.Errorf("error deleting SSH public key: %v", err)
	}

	return nil
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check the wrapped %v message: not-found means no key to delete, so nothing to do
  2. Verify the key exists: kops get sshpublickey --name <cluster>
  3. Fix state store access/permissions, then retry the delete

Example fix

// before (blind delete)
kops delete sshpublickey --name mycluster.k8s.local --yes
// after (verify first)
kops get sshpublickey --name mycluster.k8s.local
kops delete sshpublickey --name mycluster.k8s.local --yes
Defensive patterns

Strategy: try-catch

Validate before calling

kops get sshpublickey --name mycluster.k8s.local  # confirm a key exists

Try / catch

err := RunDeleteSSHPublicKey(ctx, f, out, opts)
if err != nil && strings.Contains(err.Error(), "error deleting SSH public key") {
    // not-found means nothing to delete; other causes need state store fixes
    log.Printf("ssh public key delete failed: %v", err)
}

Prevention

When it happens

Trigger: sshCredentialStore.DeleteSSHCredential() fails: no SSH credential exists for the cluster, state store is unreachable, or permissions prevent writing the deletion.

Common situations: Running `kops delete sshpublickey` on a cluster that has no SSH public key published; state store credential/permission issues; wrong --name pointing to a cluster without keys.

Related errors


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/e35f82c77ad6c213. Report an issue: GitHub.