2015年10月1日木曜日

ssh 接続の共有

ssh 接続の共有をしてみました。

環境:
Ubuntu 14.04 (Trusty Tahr) Server

マスターの ssh 接続

マスターを remoteserver に ssh 接続します。

$ ssh -N -M -o "ControlPath=~/.ssh/ctrlmaster_%r@%h:%p" worker@remoteserver
  • 以下のようにコントロール用のソケットファイルができました。

    $ ls -l ~/.ssh/
    total 4
    srw------- 1 worker worker   0 Sep 30 12:51 ctrlmaster_worker@remoteserver:22
    -rw-r--r-- 1 worker worker 444 Sep 30 12:50 known_hosts
    
  • -N を指定しているのでシェルは起動しません。(シェルを起動させたい場合は -N を指定しません。)

  • CTRL-C で終了します。

  • この ssh 接続をスレーブで共有します。


スレーブの ssh 接続

マスターの ssh 接続共有を使って remoteserver に ssh 接続します。

$ ssh -o "ControlPath=~/.ssh/ctrlmaster_%r@%h:%p" worker@remoteserver
  • マスターで指定した ControlPath と同じものを指定します。
  • 共有した ssh を使うのでパスワード無しで remoteserver にログインできます。

おまけ

以下のようにすることでマスター側もスレーブ側も ssh 接続コマンドで -o "ControlPath=~/.ssh/ctrlmaster_%r@%h:%p" を省略することができます。

$ diff -u /etc/ssh/ssh_config.org /etc/ssh/ssh_config
--- /etc/ssh/ssh_config.org     2014-05-13 01:04:32.000000000 +0900
+++ /etc/ssh/ssh_config 2015-10-01 12:40:45.478880000 +0900
@@ -52,3 +52,4 @@
     HashKnownHosts yes
     GSSAPIAuthentication yes
     GSSAPIDelegateCredentials no
+    ControlPath ~/.ssh/ctrlmaster_%r@%h:%p

0 件のコメント:

コメントを投稿