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 件のコメント:
コメントを投稿