1

以下のような Twisted Conch サーバー/クライアント SSH アプリケーションを作成しようとしています。

クライアント <---Key1---> サーバー/クライアント <---Key2---> サーバー

SSH MITM やコマンド プロキシのようなものだと思います。

同様の Twisted 関連の質問への回答を読みました。たとえば、 Twisted サーバーとクライアントのデータ共有 、およびクライアント/サーバー データの受け渡しの背後にある理論を理解しています。

不明な点は、ユーザー認証です。ツイスト コンチ アプリケーションを介して、最初のクライアントからエンドポイント サーバーにログインの詳細を渡したいと考えています。これを行う方法はありますか?

また、個別の SSH キー ネゴシエーションを実行してから、資格情報や入力したコマンドを含むすべてのデータをサーバーとクライアントの間で渡すことは可能でしょうか?

4

1 に答える 1

0

残念ながら、これは見た目よりも少し複雑です。SSH は、この種の MITM を回避するために苦労しています。同じキー ネゴシエーションを使用しない場合、publickey署名する文字列が接続の両側で異なるため、認証は成功しません (詳細については、RFCセクション 7 を参照してください)。

ただし、パスワード認証は問題なく機能するはずです。これを行う最も簡単な方法は、twisted.conch.ssh.session.SSHSessionサブクラスを作成して、メソッドでパケットをリッスンし、packetReceivedそれらを対応するtransport.sendPacket.

于 2013-08-01T02:36:46.063 に答える