2011-06-06 1 views
3

Je tente d'éditer un fichier distant dans Emacs, et j'ai de la difficulté à obtenir de the documentation et previous SO questions pour faire ce que je veux.Atteindre un hôte distant via une passerelle en utilisant Emacs et Tramp

Je travaille à distance, à partir d'une variété d'endroits, et je veux éditer des fichiers sur le serveur Foo. Le serveur Foo n'est pas directement accessible depuis Internet, mais la barre de serveur est, et Foo accepte les connexions de Bar. Je peux compter sur Bar, et Bar peut compter sur Foo.

La documentation Tramp me dit que je dois ajouter à la liste de proxy Tramp pour ce faire, et que ça devrait ressembler à ce qui suit:

(add-to-list 'tramp-default-proxies-alist 
    ("foo_host" "seanm" "/ssh:[email protected]_host")) 

Cependant, quand j'essayer, cela ne fonctionne pas , et je reçois des messages d'erreur impénétrables.

  • Comment puis-je faire référence sans ambiguïté à Foo? Il n'y a aucun serveur DNS qui sait trouver Foo à partir de son nom d'hôte, et l'adresse IP de Foo est dans l'espace privé 10.0.0.0/8. Je ne veux pas faire référence à Foo par cette adresse IP, car cela risque d'entrer en collision avec les hôtes des autres réseaux 10.0.0.0/8 que je peux visiter. En tant que kludge, j'ai ajouté Foo au fichier/etc/hosts de Bar, mais cela ne semblait pas fonctionner. Y a-t-il une meilleure solution?

  • À quelles règles de soumission dois-je adhérer? Les exemples que je vois utilisent à la fois des guillemets "double quotes" et "tick-and-single", ce dernier nécessitant apparemment une double-backslash s'échappant. Je ne comprends pas ce qui se passe là-bas - il semble qu'il y ait plusieurs couches d'analyse que cette chaîne va être poussée à travers. En essayant des variations à ce sujet, j'ai reçu des messages d'erreur qui se résument à "vous ne pouvez pas utiliser cette méthode d'accès à distance pour ce scénario." Comment puis-je configurer une deuxième méthode proxy qui me permettra de faire l'équivalent de C-x C-f /su::/path/to/file?

Tout semble très douloureux par rapport à la syntaxe multi-hop précédente. Plus tard: J'ai été capable d'obtenir les nombreuses couches d'échappement à droite afin qu'emacs 'entende' correctement les noms des hôtes. Cependant, je ne peux pas obtenir des sauts au-delà d'une seconde pour fonctionner correctement, ce qui est une perte de fonctionnalité très décevante.

+3

Bien que ce soit possible IIRC, une autre façon serait de configurer ssh pour atteindre Foo via Bar. Avec OpenSSH, utilisez un alias 'Host' avec une option' ProxyCommand'; vous trouverez de nombreux exemples sur [Super User] (http://superuser.com/), [Unix] (http://unix.stackexchange.com/) ou [Server Fault] (http: // serverfault. com /). – Gilles

+0

C'est super utile pour les premier et deuxième problèmes, mais il ne semble pas que cela aidera à dupliquer la fonctionnalité de '/ su ::/chemin/vers/fichier'. –

+1

En principe, je devrais être capable de faire toute cette chose en elisp. –

Répondre

1

La bonne réponse s'est avérée modifier ma configuration SSH avec les directives Host, HostAlias ​​et ProxyCommand.

Questions connexes