Troubleshooting Public Key Authentication
The Problem: Public key authentication is configured, but client users are unable to connect using public key authentication.
Check the client configuration
- Confirm that there is a private/public key pair on the client and note the name and location of the private key.
- Open the client configuration file. (If the user has a user-specific file, check both the global and user file.)
- Confirm that AllowedAuthentications includes 'publickey.'
- Check the IdentificationFile setting. Note the name and location of the file. (The default is ~/.ssh2/identification).
- Open the identification file
- Confirm that this file includes a line that identifies the client's private key. For example:
IdKey /home/joe/mykey - Confirm that the key name exactly matches the private key of the key pair. (For example, if your private key has a file extension, this extension needs to be included.)
- If no path is specified, confirm that the keys are located in the Secure Shell user directory (~/.ssh2/)
- Check file and directory permissions. (The second and third bullet items are required if StrictModes is enabled on the client, which is the default.)
- Is the private key readable only by the owner (600)?
- Is the identification file configured to allow write-access only to the user (600 or 644)?
- Are the user directory and all parent directories configured to allow write access only to the user (755 or less)?
Check the server configuration
- Confirm that there's a copy of the user's public key in the user-specific configuration directory on the server. The default location is ~/.ssh2.
- Open the server configuration file.
- Confirm that AllowedAuthentications includes 'publickey.'
- Check the AuthorizationFile setting. Note the name and location of the file. (The default is ~/.ssh2/authorization.)
- Open the authorization file.
- Confirm that this file includes a line that identifies the server's copy of the client's public key. For example:
Key /home/joe/mykey.pub - Confirm that the key name exactly matches the public key, including the file extension.
- If no path is specified, confirm that the key is located in the Secure Shell user directory. (The default is ~/.ssh2/. This is configurable on the server with the UserConfigDirectory keyword.)
- Check file and directory permissions. (The second bullet item is required if StrictModes is enabled on the server, which is the default.)
- Is the authorization file configured to allow write-access only to the user (600 or 644)?
- Are the user directory and all parent directories configured to allow write access only to the user (755 or less)?
|