Come posso modificare i file sul mio host remoto utilizzando il mio Emacs locale quando posso accedere all'host remoto solo tramite tramite SSH con autenticazione a chiave pubblica? Tramp gestisce i normali login della password abbastanza bene, ma non riesco a capire come farlo funzionare con le coppie di chiavi. Sto usando unix/linux su entrambe le estremità.Modifica di file remoti con Emacs utilizzando l'autenticazione a chiave pubblica
risposta
Non esiste un TRAMP equivalente a ssh [email protected] -i private-key.pem
. Tuttavia, se si esegue il comando shell ssh-add private-key.pem
, quindi ssh (e quindi TRAMP) utilizzerà automaticamente private-key.pem
per l'autenticazione. Semplicemente ssh [email protected]
funzionerà sulla shell, e aprendo il file /[email protected]:~/filename.txt
funzionerà in emacs, senza richiedere una password.
Se si utilizza un file '~/.ssh/config' per gestire le proprie chiavi, vedere la risposta [@Sebastien] (http://stackoverflow.com/a/10738277/881224). – Droogans
Se sei su Windows, puoi utilizzare facilmente il plamp con il vagabondo. Devi assicurarti che il binario del plink sia nel tuo percorso e devi personalizzare la variabile (opzione di personalizzazione di M-x) tramp-default-method per plink che combinata con lo spettacolo ti porterà quello che vuoi.
Vi lascio leggere la home page di mastice come configurare il pageant per aggiungere la vostra chiave.
C'è il metodo di plinkx pure che utilizzano il nome del profilo in modo che quando si fa un:
C-x C-f /putty_profile:
Si otterrà il putty_profile dal vostro stucco nome profilo salvato.
Se si utilizza Linux, in genere le distribuzioni moderne devono avere il portachiavi gnome (denominato anche cavalluccio marino) che avvia X con un agente SSH globale. Esempio sulla mia debian distro:
[email protected]:~$ ps aux|grep ssh-agent
chmouel 2917 0.0 0.0 4904 552 ? Ss Aug30 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/seahorse-agent --execute x-session-manager
se si fa uno ssh-add (assicurandosi di avere un'identità nel vostro ~/.ssh configurato correttamente) che dovrebbe richiedere la vostra password e identificare per tutto il vostro sessione di X.
Se non succede probabilmente hai un problema da qualche altra parte nella tua distribuzione.
Non capisco come funziona Tramp funziona perfettamente con le connessioni SSH autenticate a chiave pubblica. Per esempio, supponendo che è stata impostata la seguente configurazione in ~/.ssh/config
:
Host remotehost
User mylogin
Port 22
Hostname remotehost.fqdn
e supponendo che sia possibile eseguire ssh remotehost
correttamente in un terminale, allora si è in grado di aprire il file remoto utilizzando VAGABONDO Cx Cf /remotehost:path/to/file
Questa era una buona risposta, dovevo semplicemente aggiungere 'IdentityFile ~/.ssh/identity-file' – Alex
Io uso TRAMP con autenticazione a chiave pubblica. Potresti per favore elaborare un po 'cosa sta andando storto (e quale versione di Emacs stai usando)? Penso che TRAMP praticamente inviti semplicemente a SSH, quindi per prima cosa assicurarmi che "ssh yourname @ yourhost" funzioni come previsto con il login della chiave pubblica. – Phil
Grazie, la tua richiesta mi ha indirizzato sulla giusta traccia e ho risolto il problema (ho imparato a usare SSH in modo più corretto). Tuttavia mi piacerebbe ancora sapere come usare Tramp quando il tuo file di identità SSH si trova in una posizione non standard e quindi dovresti usare l'opzione della linea di comando '-i' di SSH. – pico
È possibile aggiungere un file di identità utilizzando ssh-add. – remvee