最近、ローカル ネットワーク内の ssh サーバーのリストを取得するための小さなスクリプトを作成しました。これは、コンピューターを画面に接続して検索しない限り、コンピューターの IP アドレスがわからないためです (これにより、ssh の必要がなくなります)。複数の ssh サーバーがあるため、どの IP アドレスがコンピューターに属しているかを知りたいです。そのためには、ssh バナーを使用してコンピューターを識別することを考えました。ssh ライブラリを使用すると、バナーを取得したり、学習経験を得るには少しやり過ぎになるため、ソケットを使用してこれを実装したいと考えています。
Atm私はPythonでこれを持っています:
from socket import socket
s = socket()
s.connect((ip,22))
s.send(s.recv(100)) # send the ssh version back
ここまでは機能し、ソケットから読み取ると、サポートされている暗号化アルゴリズムのリストが表示されます。アルゴリズムと私の MAC アドレス (まだ成功していません) のリストを送り返す必要があります。サーバーから取得したリストを送信してみましたが、その後応答がありません。
ドキュメントによると、サーバーはいつでもバナーを送信できます。通常の ssh クライアントを使用すると、ログインする前にバナーが表示されるので、認証プロセス全体を実行する必要はないと思います。
ソケットを使用して ssh バナーを取得する最も簡単な方法は何ですか?
(コードは Python である必要はありません)