class

SSH::KeyStore

Inherits Reference < Object

Découvre les clés SSH dans un dossier (par défaut ~/.ssh) selon la convention Aloli :

  • clé privée : <name>.key (ex: philippe.aloli.fr.key)
  • clé publique : <name>.pub (ex: philippe.aloli.fr.pub)

Le garde-fou anti-publication accidentelle tient à l'extension : un .key ne finira jamais par mégarde dans un commit (convention tipique *.pem ou absence d'extension qui complique les .gitignore).

Résolution par nom : le caller passe un nom logique (ex: philippe-aloli-fr, forme utilisée dans les labels côté fournisseurs OVH/Scaleway/Hetzner) ; le KeyStore applique la transformation - → . et teste l'existence du fichier <dir>/<transformé>.key.

Exemple :

store = SSH::KeyStore.new
store.path_for("philippe-aloli-fr")   # => "~/.ssh/philippe.aloli.fr.key"
store.path_for("inexistante")         # => nil

Constants

DEFAULT_DIR = File.expand_path("~/.ssh", home: true)

Constructors

new(dir : String = DEFAULT_DIR)
Source

Instance methods

available_keys

Liste des noms de clés privées disponibles dans le dossier, basée sur l'existence des fichiers *.key. Triée.

Source
path_for(name : String) : String | Nil

Retourne le chemin absolu d'une clé privée par nom logique, ou nil si aucun fichier ne correspond.

Le nom est d'abord testé tel quel, puis avec - remplacés par . (convention fournisseurs ↔ convention fichiers Aloli).

Source
path_for!(name : String) : String

Variante levée : même logique mais exception si rien trouvé. Utilisée par les callers qui ne veulent pas de fallback silencieux.

Source