chore: update readme for private key authentication supporting feat: ssh-rsa key authentication #379
This commit is contained in:
parent
c7dfad08bc
commit
a51b457014
1 changed files with 105 additions and 0 deletions
105
README.md
105
README.md
|
@ -170,6 +170,111 @@ You can customize the Keyboard Interactive authentication behavior using the fol
|
||||||
|
|
||||||
For more information on SSH keyboard-interactive authentication, refer to [RFC 4256](https://tools.ietf.org/html/rfc4256).
|
For more information on SSH keyboard-interactive authentication, refer to [RFC 4256](https://tools.ietf.org/html/rfc4256).
|
||||||
|
|
||||||
|
### SSH Private Key Authentication
|
||||||
|
|
||||||
|
WebSSH2 supports SSH private key authentication when using the `/ssh/host/` endpoint with a private key configured in the server settings.
|
||||||
|
|
||||||
|
#### Configuration
|
||||||
|
|
||||||
|
Private key authentication can only be configured through the `config.json` file:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"user": {
|
||||||
|
"name": "myuser",
|
||||||
|
"privatekey": "-----BEGIN RSA PRIVATE KEY-----\nYour-Private-Key-Here\n-----END RSA PRIVATE KEY-----",
|
||||||
|
"password": "optional-fallback-password"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Key Requirements
|
||||||
|
|
||||||
|
- Only `ssh-rsa` type keys are supported
|
||||||
|
- The private key must be in PEM format
|
||||||
|
- The key in `config.json` must be on a single line with `\n` as line separators
|
||||||
|
- Must include the appropriate header and footer:
|
||||||
|
```
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----\n[... key content ...]\n-----END RSA PRIVATE KEY-----
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Generating a Private Key
|
||||||
|
To generate a new SSH private key, you can use the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/id_rsa
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Converting Your Private Key
|
||||||
|
|
||||||
|
To convert your existing SSH private key into the correct format for `config.json`, you can use this bash command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo '"'$(cat ~/.ssh/id_rsa | tr '\n' '~' | sed 's/~/\\n/g')'"'
|
||||||
|
```
|
||||||
|
|
||||||
|
This command:
|
||||||
|
1. Reads your private key file
|
||||||
|
2. Converts newlines to temporary characters
|
||||||
|
3. Replaces those characters with `\n`
|
||||||
|
4. Wraps the result in quotes
|
||||||
|
5. Outputs the key in a format ready to paste into your `config.json`
|
||||||
|
|
||||||
|
#### Authentication Process
|
||||||
|
|
||||||
|
1. When connecting through the `/ssh/host/` endpoint, WebSSH2 will first attempt to authenticate using the private key specified in `config.json`
|
||||||
|
2. If key authentication fails and `user.password` is configured, the system will automatically attempt password authentication
|
||||||
|
3. If both authentication methods fail, you'll receive an authentication error
|
||||||
|
|
||||||
|
#### Endpoint Support
|
||||||
|
|
||||||
|
- `/ssh/host/:host` - Supports private key authentication configured via `config.json`
|
||||||
|
- `/ssh` - Does NOT support private key authentication
|
||||||
|
|
||||||
|
#### Security Considerations
|
||||||
|
|
||||||
|
- Store private keys securely in your server configuration
|
||||||
|
- Use appropriate file permissions for your `config.json` file
|
||||||
|
- Consider using encrypted private keys for additional security
|
||||||
|
- Always use HTTPS when accessing the WebSSH2 service
|
||||||
|
|
||||||
|
#### Example Usage
|
||||||
|
|
||||||
|
1. Convert and configure your private key:
|
||||||
|
```bash
|
||||||
|
# First, convert your key
|
||||||
|
echo '"'$(cat ~/.ssh/id_rsa | tr '\n' '~' | sed 's/~/\\n/g')'"'
|
||||||
|
|
||||||
|
# Copy the output and paste it into config.json
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Configure `config.json`:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"user": {
|
||||||
|
"name": "myuser",
|
||||||
|
"privatekey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpA...[rest of key]...Yh5Q==\n-----END RSA PRIVATE KEY-----",
|
||||||
|
"password": "fallback-password"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Access the service via the `/ssh/host/` endpoint:
|
||||||
|
```
|
||||||
|
https://your-server:2222/ssh/host/target-server
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Troubleshooting
|
||||||
|
|
||||||
|
If key authentication fails, check:
|
||||||
|
- Key type is `ssh-rsa`
|
||||||
|
- Key format in `config.json` is properly escaped with `\n` line separators
|
||||||
|
- Key permissions on the target SSH server
|
||||||
|
- Server's `authorized_keys` file configuration
|
||||||
|
- SSH server logs for specific authentication failure reasons
|
||||||
|
|
||||||
|
For additional support or troubleshooting, please open an issue on the GitHub repository.
|
||||||
|
|
||||||
## Routes
|
## Routes
|
||||||
|
|
||||||
WebSSH2 provides two main routes:
|
WebSSH2 provides two main routes:
|
||||||
|
|
Loading…
Reference in a new issue