2009-08-30 4 views
30

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

+0

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

+1

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

+1

È possibile aggiungere un file di identità utilizzando ssh-add. – remvee

risposta

30

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.

+5

Se si utilizza un file '~/.ssh/config' per gestire le proprie chiavi, vedere la risposta [@Sebastien] (http://stackoverflow.com/a/10738277/881224). – Droogans

1

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.

13

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

+3

Questa era una buona risposta, dovevo semplicemente aggiungere 'IdentityFile ~/.ssh/identity-file' – Alex