Редактирование удаленных файлов в Emacs с использованием аутентификации с открытым ключом - PullRequest
39 голосов
/ 30 августа 2009

Как я могу редактировать файлы на моем удаленном хосте, используя мой локальный Emacs, когда я могу получить доступ к удаленному хосту только через SSH с аутентификацией с открытым ключом? Tramp хорошо обрабатывает обычные пароли, но я не могу понять, как заставить его работать с парами ключей. Я использую Unix / Linux на обоих концах.

Ответы [ 3 ]

37 голосов
/ 27 апреля 2012

TRAMP нет эквивалента ssh user@host -i private-key.pem. Однако если вы запустите команду оболочки ssh-add private-key.pem, тогда ssh (и, следовательно, TRAMP) автоматически использует private-key.pem для аутентификации. Просто ssh user@host будет работать на оболочке, а открытие файла /user@host:~/filename.txt будет работать в emacs, без запроса пароля.

27 голосов
/ 24 мая 2012

Я не понимаю вашего вопроса, поскольку Tramp отлично работает с SSH-соединениями с аутентификацией с открытым ключом. Например, если вы установили следующую конфигурацию в ~/.ssh/config:

Host remotehost
    User     mylogin
    Port     22
    Hostname remotehost.fqdn

и при условии, что вы можете правильно запустить ssh remotehost в терминале, вы сможете открыть удаленный файл, используя TRAMP C-x C-f /remotehost:path/to/file

1 голос
/ 31 августа 2009

Если вы работаете в Windows, вы можете легко использовать plink with tramp. Вы должны убедиться, что бинарный файл plink находится в вашем пути, и вам нужно настроить переменную (M-x customize-option) tramp-default-method для plink, которая в сочетании с Pageant даст вам то, что вы хотите.

Я позволю вам прочитать домашнюю страницу putty, как настроить pageant для добавления вашего ключа.

Существует также метод plinkx, который использует имя профиля, поэтому, когда вы делаете:

C-x C-f /putty_profile:

Он получит файл putty_profile из имени сохраненного профиля в замазке.

Если вы используете Linux, обычно в современных дистрибутивах должен быть набор ключей gnome (называемый также морской конек), запускающий X с глобальным агентом SSH. Пример моего дистрибутива Debian:

chmouel@lutece:~$ 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

если вы делаете ssh-add (убедившись, что у вас есть идентичность в вашем ~ / .ssh, правильно настроенном), он должен запросить ваш пароль и идентифицировать все ваши X сессии.

Если этого не произойдет, возможно, у вас проблема в другом месте вашего дистрибутива.

...