Thanks Andreu and James - your advice to start a separate sshd in debug mode is what ultimately led me to the real problem.
It turned out not to be permissions on ~/.ssh or authorized_keys, and not an sshd_config restriction. The debug output showed:
User <profile> not allowed because shell /QOpenSys/QIBM/ProdData/OPS/tools/bin/bash does not exist
Failed password for invalid user ...
So sshd was rejecting the profile itself because the PASE shell path stored for that user pointed to an old 5733-OPS bash executable that no longer exists on that LPAR. I'm not sure how it got set like that. It was the only profile on the LPAR that had such a path set.
I confirmed it with:
SELECT AUTHORIZATION_NAME, PASE_SHELL_PATH
FROM QSYS2.USER_INFO;
and fixed it by updating the shell to a valid one:
CALL QSYS2.SET_PASE_SHELL_INFO(
'<USER>',
'/QOpenSys/pkgs/bin/bash'
);
After correcting the shell path, the user could authenticate normally and VS Code's Code for IBM i extension also worked again.
Thanks again, Scott
------------------------------
Scott Schollenberger
------------------------------