TL; DR:OpenSSH 6.xのsshクライアントが接続時に文字列「OpenSSH_6.2p2」をすぐに送信し、OpenSSH 5.xクライアントが何も送信しないのはなぜですか?
HTTP / Sプロキシを介してsshトンネルを機能させようとしています。http CONNECT要求を使用して、適切にトンネリングされたTCP接続を取得できます。Mac OSX 10.9のSSHクライアントでは正しく動作しますが、古いOSXを実行している古いMacでは動作しません。
これは私が説明するのに迷っている次の奇妙なことにつながりました。(これはSSHプロトコルに精通している人にとってはばかげた質問かもしれませんが、少し検索した後、そのプロトコルがどのように見えるかについての簡単な説明が見つかりません。RFC全体を順番に読む必要がないことを望んでいます。これをデバッグするには、したがってこの投稿。)
OpenSSH_6.2p2を搭載したMacOSX 10.9の場合:
ターミナル1:
nc -l 127.0.0.1 5000
ターミナル2:
ssh [email protected] -p 5000
次に、端子1は以下を出力します。
OpenSSH_6.2p2
したがって、この新しいクライアントは接続時にその文字列を送信しました。
OpenSSH_5.3p1を使用するCentOS6.3の場合:
端子1および2のコマンドは、上記とまったく同じです。
しかし、端子1は何も出力しません。この古いクライアントは接続時に何も送信しなかったようです。
TCP接続自体は、私が知る限りすべてから正しく機能しています。プロトコルの違いのようです。しかし、これらは両方ともSSH「バージョン2」プロトコルを使用しているようです。
これらの2台のマシンは問題なく相互にSSH接続できるようです。ただし、トンネルで何か奇妙なことが起こっているので、デバッグできるように、プロトコルが何を探しているのかを理解しようとしています。
誰かがここで何が起こっているのか理解していますか?または、どちらの側がこのプロトコルに何を送信するかについての簡単な1,2,3タイプの説明と、バージョンの違いに関する情報がどこにあるかを知っていますか?
ここで説明されています:https://tools.ietf.org/html/rfc4253#section-4.2
クライアントとサーバーの両方が、接続時にバージョン文字列を送信することになっています。ただし、以前のバージョンでは、クライアントは文字列を送信する前にサーバーを待機しているようです。これは、技術的にはバグ(おそらくSSH 6.xで修正されている)であるが、通常は実際には問題を引き起こさない実装の詳細のようです。 。
誰かが興味を持っているなら、これが私が解決しようとしていたことです:https://github.com/bradleypeabody/proxyman/blob/master/README.md
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加