Publication IA: - 4 templates (magazine, brief, essay, simple) avec CSS riche - Rewrite IA (article/exercises/tutorial/reference/mixed) - Modération avec timeout 12s + fallback safe - Quotas publish_enhance par tier (basic=2, pro=15, business=100) - Détection contenu stale (hash) - Migration DB publishedContent/publishedTemplate/publishedSourceHash Fixes: - cheerio v1.2: Element -> AnyNode (domhandler), decodeEntities cast - _isShared ajouté au type Note (champ virtuel serveur) - callout colors PDF export: extraction fonction pure testable - admin/published: guard note.userId null - Cmd+S fonctionne en mode dialog (pas seulement fullPage) i18n: - 23 clés publish* traduites dans les 15 locales - Extension Web Clipper: 13 locales mise à jour Tests: - callout-colors.test.ts (6 tests) - note-visible-in-view.test.ts (5 tests) - entitlements.test.ts + byok-entitlements.test.ts: mock usageLog + unstubAllEnvs - 199/199 tests passent Tracker: user-stories.md sync avec sprint-status.yaml
291 lines
6.4 KiB
Markdown
291 lines
6.4 KiB
Markdown
# 🔐 Connexion SSH sans mot de passe à devSanbox
|
|
|
|
> **Conteneur** : devSanbox (LXC) — IP `192.168.1.83`
|
|
> **OS** : Ubuntu 24.04 LTS
|
|
> **Utilisateur** : `devparsa`
|
|
> **Date** : 2026-05-02
|
|
|
|
---
|
|
|
|
## 📋 Prérequis
|
|
|
|
- Avoir accès au réseau local `192.168.1.x` (même VLAN que le Proxmox)
|
|
- Pouvoir pinger le conteneur : `ping 192.168.1.83`
|
|
- Avoir VS Code avec l'extension **Remote - SSH** installée
|
|
|
|
---
|
|
|
|
## 🖥️ Partie 1 — Générer une clé SSH (si tu n'en as pas)
|
|
|
|
### Sur macOS
|
|
|
|
```bash
|
|
# Vérifier si tu as déjà une clé
|
|
ls ~/.ssh/id_*.pub
|
|
|
|
# Si vide → générer une clé Ed25519 (recommandé)
|
|
ssh-keygen -t ed25519 -C "sepehr@devSanbox" -f ~/.ssh/id_devsanbox
|
|
|
|
# Laisser la passphrase vide (ou mets-en une si tu veux)
|
|
# → Appuie juste Entrée quand il demande la passphrase
|
|
```
|
|
|
|
### Sur Windows (PowerShell / Git Bash)
|
|
|
|
```powershell
|
|
# Vérifier si tu as déjà une clé
|
|
ls $env:USERPROFILE\.ssh\id_*.pub
|
|
|
|
# Si vide → générer une clé
|
|
ssh-keygen -t ed25519 -C "sepehr@devSanbox" -f $env:USERPROFILE\.ssh\id_devsanbox
|
|
|
|
# Laisser la passphrase vide
|
|
```
|
|
|
|
### Résultat
|
|
|
|
Tu dois avoir deux fichiers :
|
|
- `~/.ssh/id_devsanbox` → clé **privée** (ne jamais partager)
|
|
- `~/.ssh/id_devsanbox.pub` → clé **publique** (à copier sur le serveur)
|
|
|
|
---
|
|
|
|
## 🖥️ Partie 2 — Copier la clé publique sur devSanbox
|
|
|
|
### Méthode A : `ssh-copy-id` (le plus simple)
|
|
|
|
```bash
|
|
# macOS / Linux
|
|
ssh-copy-id -i ~/.ssh/id_devsanbox.pub devparsa@192.168.1.83
|
|
|
|
# Windows (PowerShell avec OpenSSH installé)
|
|
ssh-copy-id -i $env:USERPROFILE\.ssh\id_devsanbox.pub devparsa@192.168.1.83
|
|
```
|
|
|
|
→ Entre le password `devparsa` une dernière fois.
|
|
|
|
### Méthode B : Manuelle (si ssh-copy-id n'existe pas)
|
|
|
|
```bash
|
|
# 1. Lire ta clé publique
|
|
cat ~/.ssh/id_devsanbox.pub
|
|
|
|
# 2. Copier le contenu (commence par ssh-ed25519...)
|
|
|
|
# 3. Te connecter au conteneur
|
|
ssh devparsa@192.168.1.83
|
|
|
|
# 4. Coller la clé dans authorized_keys
|
|
mkdir -p ~/.ssh
|
|
chmod 700 ~/.ssh
|
|
echo "ssh-ed25519 AAAAC3... sepehr@devSanbox" >> ~/.ssh/authorized_keys
|
|
chmod 600 ~/.ssh/authorized_keys
|
|
|
|
# 5. Déconnecte-toi et reconnecte-toi sans password
|
|
exit
|
|
ssh devparsa@192.168.1.83
|
|
```
|
|
|
|
---
|
|
|
|
## 🖥️ Partie 3 — Configurer le fichier SSH config
|
|
|
|
### Sur macOS / Linux
|
|
|
|
Crée/modifie `~/.ssh/config` :
|
|
|
|
```bash
|
|
nano ~/.ssh/config
|
|
```
|
|
|
|
Ajoute :
|
|
|
|
```ssh
|
|
# ============================================
|
|
# devSanbox — Conteneur de développement
|
|
# ============================================
|
|
Host devSanbox
|
|
HostName 192.168.1.83
|
|
User devparsa
|
|
Port 22
|
|
IdentityFile ~/.ssh/id_devsanbox
|
|
IdentitiesOnly yes
|
|
ServerAliveInterval 60
|
|
ServerAliveCountMax 3
|
|
# ForwardAgent yes # Décommente si tu veux forwarder ta clé SSH
|
|
|
|
# Alias rapide
|
|
Host ds
|
|
HostName 192.168.1.83
|
|
User devparsa
|
|
Port 22
|
|
IdentityFile ~/.ssh/id_devsanbox
|
|
IdentitiesOnly yes
|
|
```
|
|
|
|
### Sur Windows
|
|
|
|
Crée/modifie `%USERPROFILE%\.ssh\config` :
|
|
|
|
```ssh
|
|
Host devSanbox
|
|
HostName 192.168.1.83
|
|
User devparsa
|
|
Port 22
|
|
IdentityFile C:\Users\TON_USER\.ssh\id_devsanbox
|
|
IdentitiesOnly yes
|
|
ServerAliveInterval 60
|
|
ServerAliveCountMax 3
|
|
|
|
Host ds
|
|
HostName 192.168.1.83
|
|
User devparsa
|
|
Port 22
|
|
IdentityFile C:\Users\TON_USER\.ssh\id_devsanbox
|
|
IdentitiesOnly yes
|
|
```
|
|
|
|
> **Remplace `TON_USER`** par ton vrai nom d'utilisateur Windows.
|
|
|
|
---
|
|
|
|
## 🖥️ Partie 4 — Tester la connexion
|
|
|
|
```bash
|
|
# Test simple
|
|
ssh devSanbox
|
|
|
|
# Ou avec l'alias court
|
|
ssh ds
|
|
|
|
# Si ça fonctionne → tu es connecté sans password !
|
|
# Tu dois voir : devparsa@devSanbox:~$
|
|
```
|
|
|
|
---
|
|
|
|
## 🖥️ Partie 5 — Connexion depuis VS Code
|
|
|
|
### 1. Installer l'extension
|
|
|
|
- Ouvre VS Code
|
|
- Extensions (Ctrl+Shift+X)
|
|
- Cherche **"Remote - SSH"** de Microsoft
|
|
- Installe
|
|
|
|
### 2. Se connecter
|
|
|
|
- `Ctrl+Shift+P` → "Remote-SSH: Connect to Host..."
|
|
- Sélectionne `devSanbox` (ou tape `devSanbox`)
|
|
- VS Code s'ouvre dans une nouvelle fenêtre connectée au conteneur
|
|
|
|
### 3. Ouvrir le dossier projet
|
|
|
|
- Une fois connecté : `Ctrl+K Ctrl+O` (ou File → Open Folder)
|
|
- Tape `/home/devparsa/dev/Memento`
|
|
- Le projet s'ouvre avec toutes les fonctionnalités VS Code
|
|
|
|
### 4. Terminal intégré
|
|
|
|
- `` Ctrl+` `` (backtick) → terminal directement sur devSanbox
|
|
- Tu peux faire `git pull`, `npm install`, etc.
|
|
|
|
---
|
|
|
|
## 🖥️ Partie 6 — Connexion depuis VS Code (méthode rapide)
|
|
|
|
### Fichier de config VS Code
|
|
|
|
Dans VS Code connecté à devSanbox, crée `.vscode/settings.json` dans le projet :
|
|
|
|
```json
|
|
{
|
|
"terminal.integrated.defaultProfile.linux": "bash",
|
|
"terminal.integrated.profiles.linux": {
|
|
"bash": {
|
|
"path": "/bin/bash",
|
|
"args": ["-l"]
|
|
}
|
|
},
|
|
"files.exclude": {
|
|
"**/.git": true,
|
|
"**/node_modules": true
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 Dépannage
|
|
|
|
### Problème : "Permission denied (publickey)"
|
|
|
|
```bash
|
|
# Vérifier les permissions sur le conteneur
|
|
ssh devparsa@192.168.1.83
|
|
ls -la ~/.ssh
|
|
# Doit être :
|
|
# drwx------ 2 devparsa devparsa .ssh
|
|
# -rw------- 1 devparsa devparsa authorized_keys
|
|
|
|
# Corriger si besoin
|
|
chmod 700 ~/.ssh
|
|
chmod 600 ~/.ssh/authorized_keys
|
|
```
|
|
|
|
### Problème : "Could not resolve hostname"
|
|
|
|
```bash
|
|
# Vérifier que le conteneur est en ligne
|
|
ping 192.168.1.83
|
|
|
|
# Si pas de réponse → vérifier sur Proxmox
|
|
# ssh root@192.168.1.2
|
|
# pct status 101
|
|
# pct start 101 # si stopped
|
|
```
|
|
|
|
### Problème : "Connection refused"
|
|
|
|
```bash
|
|
# Vérifier que SSH tourne sur le conteneur
|
|
ssh root@192.168.1.2
|
|
pct exec 101 -- systemctl status ssh
|
|
pct exec 101 -- systemctl start ssh # si inactif
|
|
```
|
|
|
|
### Problème : Clé pas reconnue sur Windows
|
|
|
|
```powershell
|
|
# Vérifier que le service ssh-agent tourne
|
|
Get-Service ssh-agent
|
|
Start-Service ssh-agent
|
|
|
|
# Ajouter la clé à l'agent
|
|
ssh-add $env:USERPROFILE\.ssh\id_devsanbox
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 Récapitulatif des commandes rapides
|
|
|
|
| Action | Commande |
|
|
|--------|----------|
|
|
| Connexion SSH | `ssh devSanbox` ou `ssh ds` |
|
|
| Connexion VS Code | `Ctrl+Shift+P` → "Remote-SSH: Connect to Host" → `devSanbox` |
|
|
| Ouvrir projet | `/home/devparsa/dev/Memento` |
|
|
| Vérifier status conteneur (depuis Proxmox) | `ssh root@192.168.1.2` puis `pct status 101` |
|
|
|
|
---
|
|
|
|
## 🔒 Sécurité
|
|
|
|
- **Change le password** de devparsa : `passwd` (une fois connecté)
|
|
- **Ne partage jamais** ta clé privée (`id_devsanbox`)
|
|
- **Backup ta clé** : copie `~/.ssh/id_devsanbox` et `~/.ssh/id_devsanbox.pub` sur une clé USB sécurisée
|
|
- **Si tu perds ta clé** : reconnecte-toi en password et refais l'étape 2
|
|
|
|
---
|
|
|
|
*Document généré le 2026-05-02 — Conteneur devSanbox (192.168.1.83)*
|