Как я могу редактировать файлы на своем удаленном хосте, используя мой локальный Emacs, когда я могу получить доступ к удаленному хосту только через SSH с аутентификацией открытого ключа? Tramp обрабатывает обычные пароли для входа в систему довольно хорошо, но я не могу понять, как заставить его работать с парами ключей. Я использую unix/linux на обоих концах.
Редактирование удаленных файлов с помощью Emacs с использованием аутентификации с открытым ключом
Ответ 1
Нет эквивалента TRAMP для ssh [email protected] -i private-key.pem
. Однако, если вы запустите команду оболочки ssh-add private-key.pem
, тогда ssh (и, следовательно, TRAMP) автоматически будет использовать private-key.pem
для аутентификации. Просто ssh [email protected]
будет работать на оболочке, и открытие файла /[email protected]:~/filename.txt
будет работать в emacs без запроса пароля.
Ответ 2
Я не понимаю, как Tramp отлично работает с аутентифицированными SSH-соединениями с открытым ключом.
Например, предположив, что вы установили следующую конфигурацию в ~/.ssh/config
:
Host remotehost
User mylogin
Port 22
Hostname remotehost.fqdn
и предположим, что вы можете правильно запустить ssh remotehost
в терминале, тогда вы сможете открыть удаленный файл, используя TRAMP C-x C-f /remotehost:path/to/file
Ответ 3
Если вы находитесь в Windows, вы можете легко использовать plink с tramp. Вы должны убедиться, что двоичный файл plink находится на вашем пути и должен настроить параметр (метод настройки-m-x) для параметра tramp-default-method для добавления, который в сочетании с показателем сделает вас тем, что вы хотите.
Я разрешаю вам прочитать домашнюю страницу шпателя, как настроить конкурс, чтобы добавить свой ключ.
Существует также метод plinkx, который использует имя профиля, поэтому, когда вы делаете:
C-x C-f /putty_profile:
Он получит файл putty_profile из вашего сохраненного имени профиля шпаги.
Если вы используете Linux, то, как правило, современные дистрибутивы должны иметь ключ gnome (называемый также морским коньком), начиная с X с помощью глобального агента SSH. Пример моего дистрибутива debian:
[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
если вы выполните ssh-add (убедитесь, что у вас есть идентификатор в правильной конфигурации ~/.ssh), он должен запросить ваш пароль и определить для всех ваших сеансов X.
Если этого не происходит, у вас, вероятно, есть проблема где-то еще в вашем дистрибутиве.