LoginSignup
3
4

More than 5 years have passed since last update.

Emacs trampで多段SSHをpemキー使いながら、接続先でsudoする話。

Posted at

Emacsのtrampでpemキー使って多段SSHし、接続先でsudoします。
サーバ、ローカルPCともLinuxを想定しています。

trampとは何か

っていう話ははしょります。
ざっくりいうとローカルマシンのEmacsでsshで繋いでリモートファイルをいじる便利なやつです。

ネットワーク構成

以下のように、踏み台サーバを介した後に対象のアプリサーバにつなぎ、sudoすることを考えます。

スクリーンショット 2017-12-20 23.02.59.png

問題は

  • trampは公開鍵(pemキー)認証に対応していない。
  • 対象のサーバではsudo権限がほしいが、接続先で権限を変えることが出来ない。

pemで認証して踏み台しつつ、sudoするってのは、ググってもでなかったのでここで共有します。
接続先でapacheとか編集したいよね..

sshの設定から。

trampだけで公開鍵認証は使えないので、一旦ssh/configに設定を書き、sshでつながるようにします。
.ssh/configの設定を以下のように行います。

Host bastion
  HostName 172.0.0.0
  User myuser
  IdentityFile /path/to/key1.pem

Host app
  HostName 192.0.0.0
  User myuser
  IdentityFile /path/to/key2.pem
  ProxyCommand ssh -W %h:%p bastion

ProxyCommandにて踏み台を介す設定です。

こうして以下のように疎通をとります。未知の接続先なら一旦接続していたほうが後々便利です。trampで初回接続しようとすると、yes/noきかれるところで止まっていまいます。

$ ssh app
ECDSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)? yes 脚注
[myuser@app ~]$

emacsの設定

以下のように.emacs.d/init.elを設定します。

(require 'tramp)
(setq tramp-default-method "ssh")

trampでの接続

で、以下のようにC-x C-f (find-file)してappに接続します。

/ssh:app:
or
/app:

通常ユーザ(ここではmyuser)でログインできることを確認。

sudoになる

上記の通り入力すると/home/myuserのdiredが開いているはずなので、その状態でC-x C-fすると以下がミニバッファに出ます。

/ssh:app:/home/user/

これを以下のように編集

/ssh:app|sudo:app:

こうするとrootユーザでログインできてます!
確認はC-M-!からwhoamiを入力するとrootと出ればOK。

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