PuTTYを使用してLinuxマシン(centos 6.4)に接続します。 PuTTYが1種類のプロトコルのみを使用するように設定できるという事実を除いて、現在のssh接続バージョン(SSH1またはSSH2)を見つけるにはどうすればよいですか?
あなたが入ったらあなたは言う:
ssh -v localhost
サーバーの正確なバージョンがわかります。
私はこれが古い質問であることを知っていますが、私がそれに遭遇したので、私は別の方法を投稿することに抵抗できませんでした。
cstamas が示唆するように、ssh -v localhost
を使用できます。詳細モードで自分の127.0.0.1にsshするだけで、進行状況のデバッグメッセージが表示されます。はい、このプロセスを通じて、通信の上部を見ることができ、現在実行しているSSHバージョンを取得できます。
しかし、ssh man
ページを読むと、sshの-V
オプションの方が便利です。 ssh man page を取り出しました:
-Vバージョン番号を表示して終了します。
-v詳細モード。 sshに進行状況に関するデバッグメッセージを出力させます。これは、接続、認証、および構成の問題のデバッグに役立ちます。複数の-vオプションを指定すると、詳細度が上がります。最大は3です。
ですから、単純にssh -V
を実行して、次のようなものを取得する方が良いと思います。
> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
お役に立てれば。
PuTTYセッション、ロギングで、[SSHパケットと生データ]ラジオボタンを選択します。任意の場所にあるPuTTY.logとしてログファイルを選択します。接続します。見るべき:
Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
SSH-2.0の意味の詳細については、以下を参照してください。
その他の方法 Telnetクライアントを使用してポート22を指定することもできます。
telnet test1 22
接続すると、次のようになります。
192.168.144.145を試行しています... test1に接続しました。エスケープ文字は「^]」です。 SSH-2.0-OpenSSH_5.3
最後の行は探すものです:
SSH-2.0-OpenSSH_5.3
SSH-2.0
それで問題ありません。接続したsshサーバーはSSHプロトコルバージョン2のみをサポートします。SSHV1プロトコルクライアントからの接続はサポートしません。
ただし、次の場合:
SSH-1.99-OpenSSH_5.3
これは、サーバーエンドが引き続きSSLプロトコルバージョン1をサポートしていることを意味します。これには、sshd_config
ファイル:
Protocol 1,2
プロトコル1は脆弱であるため、使用しないでください。
だからそれをまっすぐにするために。リモートサーバーのポート22にTelnetで接続するときにSSH-2が表示される場合は、サーバーがプロトコル1をサポートしていないため、sshプロトコルバージョン2のみを使用できます。
上記のcstamasの回答に従って、-vフラグは次の行を表示します。
debug1: Remote protocol version 1.99, remote software version OpenSSH_5.3
または:
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
あなたは見たい version 2.0
そこ。
これは、ローカルマシンからnetcatを使用してかなり簡単に取得できます。次に例を示します。
$ nc [IP_ADDRESS] 22
SSH-2.0-OpenSSH_5.3
私はこれが好きです:
$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$
ここでの利点は、接続が開いたままになっていないため、プログラムで実行できることです。 Pythonの場合、次を試してください。
ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))
私が知っている唯一の方法では、/var/log/auth.log
のsshログエントリを表示するための十分な権限が必要です。
$ echo $SSH_CONNECTION
127.0.0.1 12375 127.0.0.1 22
SSH_CONNECTION
変数の最初と2番目のフィールドは、接続の送信元IPと送信元ポートを示します。 /var/log/auth.log
のこれらの値をgrep
- ingすると、ssh接続が認証されたときからのログエントリを見つけることができます。
$ Sudo grep -F ' from 127.0.0.1 port 12375 ' /var/log/auth.log | grep ssh
Jun 26 16:29:52 morton sshd[20895]: Accepted keyboard-interactive/pam for jim from 127.0.0.1 port 12375 ssh2
このログエントリは、現在の接続がssh2プロトコルを使用していることを示しています。もちろん、sshセッションが数日間開いている場合、ログエントリは/var/log/auth.log.0
または古いauth.log
ファイルにある可能性があります。