# SSH Access with sshpass

**Date**: 2025-12-13  
**Status**: ✅ **CONFIGURED**

---

## Overview

All SSH scripts have been updated to use `sshpass` with the password from `.env` file (lines 45-46).

---

## Quick Access Scripts

### SSH to ML110-01

```bash
./scripts/ssh-ml110-01.sh
```

### SSH to R630-01

```bash
./scripts/ssh-r630-01.sh
```

### Execute Commands Remotely

```bash
# ML110-01
./scripts/ssh-ml110-01.sh 'pveversion'
./scripts/ssh-ml110-01.sh 'qm list'
./scripts/ssh-ml110-01.sh 'pvesm status'

# R630-01
./scripts/ssh-r630-01.sh 'pveversion'
./scripts/ssh-r630-01.sh 'qm list'
./scripts/ssh-r630-01.sh 'pvesm status'
```

---

## Manual Commands

### Using sshpass Directly

**ML110-01**:
```bash
PROXMOX_PASSWORD=$(sed -n '45,46p' .env | grep PROXMOX_ROOT_PASS | cut -d'=' -f2 | tr -d '"' | tr -d "'")
sshpass -p "$PROXMOX_PASSWORD" ssh root@192.168.11.10
```

**R630-01**:
```bash
PROXMOX_PASSWORD=$(sed -n '45,46p' .env | grep PROXMOX_ROOT_PASS | cut -d'=' -f2 | tr -d '"' | tr -d "'")
sshpass -p "$PROXMOX_PASSWORD" ssh root@192.168.11.11
```

---

## Password Source

The password is automatically loaded from `.env` file:
- **Location**: Lines 45-46
- **Variable**: `PROXMOX_ROOT_PASS`
- **Format**: Automatically extracted and cleaned

---

## Updated Scripts

### 1. `scripts/ssh-proxmox-nodes.sh`
- Displays SSH commands with sshpass
- Shows password status
- Provides verification commands

### 2. `scripts/ssh-ml110-01.sh`
- Quick SSH to ML110-01
- Password loaded automatically
- Supports command execution

### 3. `scripts/ssh-r630-01.sh`
- Quick SSH to R630-01
- Password loaded automatically
- Supports command execution

### 4. `scripts/test-proxmox-connectivity.sh`
- Uses sshpass for SSH tests
- Automatically loads password
- Tests both nodes

---

## Example Usage

### Check Proxmox Version

```bash
# ML110-01
./scripts/ssh-ml110-01.sh 'pveversion'

# R630-01
./scripts/ssh-r630-01.sh 'pveversion'
```

### List VMs

```bash
# ML110-01
./scripts/ssh-ml110-01.sh 'qm list'

# R630-01
./scripts/ssh-r630-01.sh 'qm list'
```

### Check Storage

```bash
# ML110-01
./scripts/ssh-ml110-01.sh 'pvesm status'

# R630-01
./scripts/ssh-r630-01.sh 'pvesm status'
```

### Interactive SSH Session

```bash
# ML110-01
./scripts/ssh-ml110-01.sh

# R630-01
./scripts/ssh-r630-01.sh
```

---

## Security Notes

⚠️ **Important**: 
- Password is stored in `.env` file (should be in `.gitignore`)
- `sshpass` passes password via command line (visible in process list)
- For production, consider using SSH keys instead

### Recommended: Setup SSH Keys

```bash
# Generate key
ssh-keygen -t rsa -b 4096 -f ~/.ssh/proxmox_key

# Copy to both nodes
./scripts/ssh-ml110-01.sh 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' < ~/.ssh/proxmox_key.pub
./scripts/ssh-r630-01.sh 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' < ~/.ssh/proxmox_key.pub

# Then use key-based auth
ssh -i ~/.ssh/proxmox_key root@192.168.11.10
ssh -i ~/.ssh/proxmox_key root@192.168.11.11
```

---

## Troubleshooting

### sshpass Not Installed

```bash
# Ubuntu/Debian
sudo apt-get install sshpass

# RHEL/CentOS
sudo yum install sshpass
```

### Password Not Found

Check `.env` file:
```bash
sed -n '45,46p' .env
```

Should show:
```
PROXMOX_ROOT_PASS=L@KERS2010
```

### Connection Issues

Test connectivity:
```bash
ping -c 3 192.168.11.10
ping -c 3 192.168.11.11
```

Test SSH manually:
```bash
ssh -v root@192.168.11.10
```

---

## Conclusion

✅ **All scripts updated to use sshpass**

- Password automatically loaded from `.env`
- Quick access scripts available
- Connectivity tests use sshpass
- Ready for automated operations

---

**Last Updated**: 2025-12-13  
**Status**: ✅ **CONFIGURED**

