I wonder if this might be because you’re using a newer version of openssh than I am.
Something similar has been noted at bitbucket: OpenSSH 8.8 client incompatibility and workaround - Atlassian Community
Try adding the lines that they suggest to your config:
Host anvil.works
IdentityFile <path to your key>
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
(BTW - the shell request error is as expected. We’re only using the ssh command to test the connection. We don’t actually expect anvil to give us a shell at their end)!