web-dev-qa-db-ja.com

現在の接続の現在のSSHプロトコルバージョンを見つけるにはどうすればよいですか?

PuTTYを使用してLinuxマシン(centos 6.4)に接続します。 PuTTYが1種類のプロトコルのみを使用するように設定できるという事実を除いて、現在のssh接続バージョン(SSH1またはSSH2)を見つけるにはどうすればよいですか?

36
codiac

あなたが入ったらあなたは言う:

ssh -v localhost

サーバーの正確なバージョンがわかります。

48
cstamas

私はこれが古い質問であることを知っていますが、私がそれに遭遇したので、私は別の方法を投稿することに抵抗できませんでした。

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

お役に立てれば。

20
Thanos

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 そこ。

11
davey

これは、ローカルマシンからnetcatを使用してかなり簡単に取得できます。次に例を示します。

$ nc [IP_ADDRESS] 22
SSH-2.0-OpenSSH_5.3
5
Awesominator

私はこれが好きです:

$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$

ここでの利点は、接続が開いたままになっていないため、プログラムで実行できることです。 Pythonの場合、次を試してください。

ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))
3
Joshua Detwiler

私が知っている唯一の方法では、/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ファイルにある可能性があります。

0
Jim L.