ssh-add -K not adding keys to Keychain

I used ssh-add -K to add keys to Keychain previously in this environment: Intel chipset, macOS Mojave, homebrew OpenSSH_7.9p1, LibreSSL 2.7.3.

Now I got a new Mac with the M1 chip and Monterey. I installed homebrew and OpenSSH (OpenSSH_8.8p1, OpenSSL 1.1.1m) but the ssh-add -K method doesn't work anymore:

ssh-add -v -K srv_key
Enter PIN for authenticator: 
debug1: start_helper: starting /opt/homebrew/Cellar/openssh/8.8p1_2/libexec/ssh-sk-helper 
debug1: sshsk_load_resident: provider "internal", have-pin
debug1: sk_probe: 0 device(s) detected
debug1: ssh_sk_load_resident_keys: failed to find sk
Provider "internal" returned failure -1
debug1: ssh-sk-helper:  sshsk_load_resident failed: invalid format
debug1: main: reply len 8
debug1: client_converse: helper returned error -4
Unable to load resident keys: invalid format

I think the -K option now functions as the documentation says: "-K Load resident keys from a FIDO authenticator.", not the previous special feature for macOS. It can't find the sk module so it fails to load the key.

I can load the key now with ssh-add srv_key but it doesn't work with the ssh config UseKeychain.

What's the current practice to make the previous Keychain configuration work with SSH? Thanks for any suggestion!


Solution 1:

This is the solution to keep using the SSH-Keychain integration: Don't install Homebrew OpenSSH but use the Apple builtin OpenSSH.

The Apple OpenSSH is located in /usr/bin/ and the current version is OpenSSH_8.6p1, LibreSSL 2.8.3

ssh-add -K srv_key
WARNING: The -K and -A flags are deprecated and have been replaced
         by the --apple-use-keychain and --apple-load-keychain
         flags, respectively.  To suppress this warning, set the
         environment variable APPLE_SSH_ADD_BEHAVIOR as described in
         the ssh-add(1) manual page.
Enter passphrase for srv_key:

Use ssh-add --apple-use-keychain key_file instead of ssh-add -K key_file to add the key for the new OpenSSH on macOS.