web-dev-qa-db-ja.com

OpenSSHは指定されたホスト名のControlMasterを無効にします

使ってます OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011 Mac OS X Snow Leopard。永続的な接続を維持するようにControlMaster機能を設定しています。ぼくの ~/.ssh/configには以下があります。

Host *
  ControlPath /ms/%r@%h:%p
  ControlMaster auto
  ControlPersist 4h

Host *.unfuddle.com
  ControlMaster no

しかし、私が見るところから-unfuddle.comホストにSSHを使用しようとしている場合でも、マスター接続は常に作成されます:

 [andrey-mbp〜] $ ssh -v [email protected] 
 OpenSSH_5.9p1、OpenSSL 0.9.8r 8 Feb 2011 
 debug1:設定データ/ユーザーの読み取り/akhkharu/.ssh/config
debug1:/Users/akhkharu/.ssh/config line 1:* 
 debug1:のオプションの適用:/Users/akhkharu/.ssh/config line 6:Applying * .unfuddle.com 
 debug1のオプション:構成データの読み取り/usr/local/Cellar/openssh/5.9p1/etc/ssh_config
debug1:auto-mux:既存のマスターの試行
 debug1:制御ソケット "/ms/[email protected]:22"が存在しません
 debug1:droolit.unfuddle.com [174.129.5.196]ポート22に接続しています。
 debug1 :接続が確立されました。
デバッグ1:識別ファイル/Users/akhkharu/.ssh/id_rsaタイプ1 
デバッグ1:識別ファイル/Users/akhkharu/.ssh/id_rsa-certタイプ-1 
 debug1:IDファイル/Users/akhkharu/.ssh/id_dsaタイプ2 
 debug1:IDファイル/Users/akhkharu/.ssh/id_dsa-certタイプ-1 
 debug1:IDファイル/ Users/akhkharu/.ssh/id_ecdsaタイプ-1 
 debug1:IDファイル/Users/akhkharu/.ssh/id_ecdsa-cert type -1 
 debug1:リモートプロトコルバージョン2.0、リモートソフトウェアバージョンOpenSSH_5.8 
 debug1:一致:OpenSSH_5 .8 pat OpenSSH * 
 debug1:プロトコル2.0の互換モードを有効にする
 debug1:ローカルバージョン文字列SSH-2.0-OpenSSH_5.9 
 debug1:SSH2_MSG_KEXINIT sent 
 debug1 :SSH2_MSG_KEXINITが受信されました
デバッグ1:kex:サーバー->クライアントaes128-ctr hmac-md5なし
デバッグ1:kex:クライアント->サーバーaes128-ctr hmac-md5なし
デバッグ1: SSH2_MSG_KEX_ECDH_INIT 
 debug1:sending SSH2_MSG_KEX_ECDH_REPLY 
 debug1:サーバーホストキー:RSA a6:74:33:36:95:31:6e:a6:d7:71:87:b8:3c:38 :e2:60 
 debug1:ホスト 'droolit.unfuddle.com'は既知であり、RSAホストキーと一致します。
 debug1:/Users/akhkharu/.ssh/known_hosts:390で見つかったキー.____。] debug1:ssh_rsa_verify:署名は正しい
 debug1:SSH2_MSG_NEWKEYS sent 
 debug1:expecting SSH2_MSG_NEWKEYS 
 debug1:SSH2_MSG_NEWKEYS r eceived 
 debug1:サーバーでローミングは許可されていません
 debug1:SSH2_MSG_SERVICE_REQUEST sent 
 debug1:SSH2_MSG_SERVICE_ACCEPT received 
 debug1:継続できる認証:publickey 
 debug1 :次の認証方法:publickey 
 debug1:RSA公開鍵の提供:/Users/akhkharu/.ssh/id_rsa
debug1:サーバーが鍵を受け入れる:pkalg ssh-rsa blen 277 
 debug1 :認証に成功しました(publickey)。
 droolit.unfuddle.com([174.129.5.196]:22)に対して認証されました。
 debug1:マルチプレックスマスターソケットのセットアップ
 debug1:チャネル0 :新しい[/ms/[email protected]:22]
debug1:control_persist_detach:backgrounding master process 
 debug1:forking to background 
 debug1:Entering interactive session。
 debug1:多重化制御接続
 debug1:チャネル1:新しい[mux-control] 
 debug1:チャネル2:新しい[client-session] 
 debug1:リモート:強制コマンド。
 debug1:リモート:ポート転送が無効。
 debug1:リモート:X11転送が無効になっています。
 debug1:リモート:エージェント転送が無効になっています。
 debug1:リモート:Pty割り当てが無効になっています。
 debug1:リモート:強制コマンド。
 debug1:リモート:ポート転送が無効です。
 debug1:リモート:X11転送が無効です。
 debug1:リモート:エージェント転送が無効です。
 debug1:リモート:Pty割り当てが無効です。 
 debug1:mux_client_request_session:master session id:2 
 PTY allocation request failed 
 Need SSH_ORIGINAL_COMMAND 
 debug1:client_input_channel_req:channel 2 rtype exit-status reply 0 
 debug1:client_input_channel_req:channel 2 rtype [email protected] reply 0 
 debug1:channel 2:free:client-session、nchannels 3 
 debug1:channel 1:free:mux-control、 nchannels 2 
 droolit.unfuddle.comへの共有接続が閉じられました。
 [andrey-mbp〜] $ ll /ms/
合計0 
 srw ------- 1 akhkharu admin 0B Jul 17 11:55 [email protected] .com:22 

おかげで、
アンドレイ。

20
Andrey Chernih

きみの *ホストスタンザがキャッチしています。より具体的なホストスタンザを先に配置します。

SuperUserでの私の同様の質問 への回答で説明されているように、 "bang"構文を使用して、次のように特定のホストを元のHost *スタンザから除外できます。

Host * !*.unfuddle.com
    ControlPath /ms/%r@%h:%p
    ControlMaster auto
    ControlPersist 4h

私の状況では、Host *を使用するときのHostセクションの順序は無関係であるように見えましたが、上記の方法は常に機能します。

11
Scott Dudley

私にとっては、ControlPathスタンザ内でnoneHostにさらに設定すると機能します。

あなたが試すことができます:

Host *.unfuddle.com   
    ControlMaster no
    ControlPath none

その後、制御セッションは生成されません。

5
Tim Weippert