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


35

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


既に行った研究を表示するのに役立ちます
ドリューKhoury

@DrewKhouryこれに対する答えを見つけるためにグーグルで試しただけですが、これに関する結果は見つかりませんでした。現在の接続(使用中)プロトコル(ssh1またはssh2)をどのように確認できるのか、誰も説明しません。
codiac

回答:


46

一度あなたが言う:

ssh -v localhost

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


4
これは現在の接続タイプを示していないようです。
コディアック

18

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

以下のようcstamasが提案を使用できssh -v localhost進捗状況のメッセージをデバッグ表示され、冗長モードであなたの自己127.0.0.1に単純にsshできます。はい、このプロセスを通じて、通信の上部を見ることができ、現在実行しているSSHバージョンを取得できます。

しかし、このssh manページを読むと、-Vssh のオプションがより役立つことがわかります。sshのmanページを取り出しました:

-Vバージョン番号を表示して終了します。

-v詳細モード。sshに進行状況に関するデバッグメッセージを出力させます。これは、接続、認証、および構成の問題のデバッグに役立ちます。複数の-vオプションを使用すると、冗長性が高まります。最大値は3です。

ですから、次のようなことをするだけでよいと思いますssh -V

> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

お役に立てれば。


2
それはプログラムのバージョンであり、接続に使用されるプロトコルではありません。3年前の答えが正しく説明されているように、まったく同じプログラムがSSH1とSSH2の両方のプロトコルをサポートできるかどうかは、構成によって異なります。
dave_thompson_085

11

[セッションのパテ]、[ログ]で、[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そこを見たいです。


4

ローカルマシンからnetcatを使用して、これを非常に迅速に取得できます。次に例を示します。

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

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))

0

私が知っている唯一の方法は、のsshログエントリを表示するのに十分な権限を持っていることを必要とします/var/log/auth.log

$ echo $SSH_CONNECTION 
127.0.0.1 12375 127.0.0.1 22

SSH_CONNECTION変数の最初と2番目のフィールドは、接続のソースIPとソースポートを示します。grepでそれらの値のために-ing /var/log/auth.log、私は私の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ファイルである可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.