LoginSignup
3
3

More than 5 years have passed since last update.

windowsのNTemacs + cygwinでtrampを使う設定

Last updated at Posted at 2016-10-28

windowsのntemacsでtrampを使おうとすると、

emacs
C-x C-f
Find File: /sshx:foo@bar:baz.txt
ssh_askpass: exec(/usr/sbin/ssh-askpass): No such file or directory

となって、動かない。
cygwinのminttyなどの端末でssh-agent, ssh-addを実行してsshのパスフレーズを入力し、その端末からntemacsを起動すれば、ntemacs上でパスワードやパスフレーズを入力する必要がないので、trampが期待通りに動く。

cygwin-shell
% eval `ssh-agent`
Agent pid 12748
% ssh-add
Enter passphrase for /home/USER/.ssh/id_rsa: 
Identity added: /home/USER/.ssh/id_rsa (/home/USER/.ssh/id_rsa)
% /cygdrive/c/emacs-25.1/bin/emacs

しかしtrampの使用頻度は少ないので、常に端末からemacsを起動しておくのは面倒であり、普段は端末からではなくショートカットをクリックするだけでntemacsを起動したい。そしてtrampを使いたいときには、ntemacsを再起動せずにそのまますぐに使いたい。

cygwinの端末でssh-agent, ssh-addを実行するとSSH_AUTH_SOCKSSH_AGENT_PIDの二つの環境変数が設定されるので、trampを使いたいときには同じ値をemacs上で設定すればよい。

emacs
M-x eval-expression
Eval: (setenv "SSH_AGENT_SOCK" "/tmp/ssh-xxxxx")
M-x eval-expression
Eval: (setenv "SSH_AGENT_PID" "12345")

コピー&ペーストは面倒なので、emacsclientを使って簡単に設定できるようにした。

.zshrc
alias trampsetup='emacsclient -n -e "(progn (setenv ¥"SSH_AUTH_SOCK¥" ¥"$SSH_AUTH_SOCK¥") (setenv ¥"SSH_AGENT_PID¥" ¥"$SSH_AGENT_PID¥"))"'
init.el
(server-start)

ショートカットをクリックしてemacsを起動し、trampを使いたくなったら、cygwinの端末を起動して以下を実行する。

cygwin-shell
% eval `ssh-agent`
Agent pid 12748
% ssh-add
Enter passphrase for /home/USER/.ssh/id_rsa: 
Identity added: /home/USER/.ssh/id_rsa (/home/USER/.ssh/id_rsa)
% trampsetup
"12748"
emacs
C-x C-f
Find File: /sshx:foo@bar:baz.txt
Tramp: Waiting for prompts from remote shell...done
Tramp: Found remote shell prompt on bar
Tramp: Opening connection for edge using sshx...done
Tramp: Inserting /sshx:bar:/home/foo/baz.txt...
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3