2017-07-12 4 views
1

クライアントからドッカーコンテナへの着信ssh接続を透過的に転送するサーバを用意したいとします。これには、scp、gitトランスポートなどが含まれている必要があります。これはキーで動作する必要があります。パスワードは無効です。ユーザーはサーバーを見てはいけません。 更新:はい、これは実際には、ユーザーがサーバーがあることに気付かないことを意味します。設定はサーバ上で完全に行わなければなりません!だから、ドッカーコンテナへの透過的なssh接続転送

client -----> server -----> container (actual connection) 
client -------------------> container (what the user should see) 

、どのような与えられたことはこれです:

[email protected]$ ssh [email protected] 
[email protected]$ ssh -p 42 [email protected] 
[email protected]$ 

しかし、私が欲しいのはこれです:

[email protected]$ ssh [email protected] 
[email protected]$ 

私はauthorized_keysファイルにcommand="ssh -p 42 [email protected]"構文を使用してみました、これはちょっと2番目のssh接続でのみ、認証が成功しなかったときにユーザーがパスワードを入力する必要があります(serverはha秘密鍵はuserです)。 パスワードを入力しても、この方法はscpでは機能しません。

私もtunnel=コマンドについて聞いたが、私はそれを設定する方法がわからない(とmanページが参考未満です)。

私はArchでOpenSSH 7.5p1を使用しています。あなたの~/.ssh/configファイルでこれを入れて

答えて

1

Host server-container 
    ProxyCommand ssh server -W localhost:42 

はその後、単に実行します。

ssh server-container 

限り、あなたのユーザ名が一致しているよう。ない場合は、このようにそれらを指定することができます。

Host server-container 
    ProxyCommand ssh [email protected] -W localhost:42 

を次に単に実行します。

ssh [email protected] 

ちょうどボーナスとして、あなたは docker execを使用した容器の中に入るようにsshを使用することを避けることができます。このように:

ssh -t server docker exec -it <container-id> bash 
+0

私が言ったように、それはserversideideを構成する必要があります。クライアントは悪意のあるわけではありませんが、どうすればいいですか...十分に有能ではありません。 – bitmask

+0

iptables?またはsshエージェント? – Robert

0

これは私が今思い描いた解決策です。それは公共の一部は、他のすべてのものが動作するように見える非常にわずかに透明性を破るcontainer年代~/.ssh/authorized_keysに見えるが、それ以外になりますように私は、2番目のキーを持つビット不幸です。

[email protected]$ cat .ssh/authorized_keys 
command="ssh -q -p 42 [email protected] -- \"$SSH_ORIGINAL_COMMAND\"",no-X11-forwarding ssh-rsa <KEYSTRING_1> 
[email protected]$ cat .ssh/id_rsa.pub 
<KEYSTRING_2> 
[email protected]$ cat .ssh/authorized_keys 
ssh-rsa <KEYSTRING_2> 

clientは自分の秘密鍵でserverに対して許可します。その後、サーバーは、その特定の認証のためにのみ存在し、専用キーでcontainerにジャンプします。私はあなたには、いくつかのコマンドを注入することによって、command=から抜け出すことを少し心配だけど、今のところ、私は脱出することができます何の順列を発見しました。
により$SSH_ORIGINAL_COMMANDを渡すことに、あなたも、等々scpssh-copy-idとを行うことができます。

注:その他の理由でssh-copy-idを許可しないようにするには、コンテナ内のuserに対してauthorized_keysを書き込み不可能にするだけです。

関連する問題