LoginSignup
5
4

More than 5 years have passed since last update.

WindowsでもEmacsからsshログインしたい

Last updated at Posted at 2018-04-24

この記事は?

tramp-modeのお話ではありません
NTEmacsの*shell*からsshでサーバにログインしコマンドをバシバシ打つためのものです
makeのためだけにTeraTerm使うのが癪だったので調べました
結論から申し上げますと plink+ssh-mode でいけますよというお話

M$のOpenSSHをcmdproxyから使うと上手くいかない

NTEmacsでM-x shellすると起動するcmdpoxy.exe
普通のcmd上でM$のOpenSSHClient使って繋がるの確認したのに
cmdproxy経由だと以下のようなエラーで上手くいかない

Pseudo-terminal will not be allocated because stdin is not a terminal.

このエラーは仮想端末ptyが無いよーと言っているらしく
回避方法としてfakecygptyを使うとcygwinのptyを通してコマンドを実行できる
詳細は Ssh With NTEmacs#EmacsWiki

ただ、このfakecygpty、windows7の時は動いていたのにwindows10で上手く動かない

脱fakecygpty

fakecygptyが無ければ使わなければいいじゃない
ということで他のsshクライアントを試したところ
plinkを使うと*shell*上で使ってもokなことがわかった

ちなみにplinkputtyに付いてくる
sshの機能単体のCUIプログラムです

puttyは適当にDLしてください
plink, psftpとかがインストールされると思います

plinkの問題点:プロンプトが2重に表示される

こんなイメージ

user@host:~$ ls<ret>
ls <-これは*shell*のecho

user@host:~$ <-??????

user@host:~$ _<-ここにカーソルくる

原因は確かではありませんが改行コードと思われます
Win環境では CRLF、Linux環境ではLFのみなので
CRとLFの2回のプロンプトが表示されていると考えられます
なので、CRを無視するようにttyに設定します
stty igncr

またコマンドが2重になっているのは
*shell*のechoと端末からのechoが別になっているためと考えられます
なので、echoを無しにします
stty -echo

以上を踏まえて
stty igncr -echo
.bashrcなどに加えるとプロンプトの2重表示を回避できます

ただしこの設定でTeraTerm等の普通のsshクライアントからloginすると
echoが返らず何を入力しても文字が表示されなくなりますので注意を

ファイルパスのTab補完:ssh-mode

*shell*からsshを使うと補完が効かなくてめんどうです
そこで ssh-modeを使うとtrampを利用してパスの補完を行えます

ssh-modeはmelpaからとってこれます
M-x package install ssh

ssh-modeplinkの場所を教えるためには以下のように設定します

ssh-mode.el
;; ssh-modeでplink使うよう設定
(ssh-program "/path/to/plink")
;; trampでpsftp(puttyのsftp)使うよう設定
(tramp-default-method "/path/to/psftp")
;; ファイルパスの補完有効化
(add-hook 'ssh-mode-hook
          (lambda ()
            (setq ssh-directory-tracking-mode t)
            (shell-dirtrack-mode t)
            (setq dirtrackp nil)))

M-x sshssh-modeを起動できます
ホスト名を聞かれるのでいつのもごとくuser@host形式で入力
ホストが見つかればパスワードを聞かれるので入力
さらにtramp接続のためにもう一度パスワードを聞かれます

参考 Ssh With Emacs#EmacsWiki

まとめ

  • ssh-mode
  • plink, psftp
  • stty igncr -echo

これでTeraTermとさよなら

5
4
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
5
4