hexeditをインストールします。
apt-get update && apt-get install hexedit
sshdバイナリをバックアップし、編集可能な作業コピーを(ルートとして)作成します。
cp -p /usr/sbin/sshd /tmp/sshd.backup
cp -p /tmp/sshd.backup /tmp/sshd.new
hexeditでバイナリを更新します。
hexedit /tmp/sshd.new
Tabキーを押して、16進数からASCII領域に切り替えます。
CTRL + Sを使用して検索プロンプトを表示し、「OpenSSH_7.4」のように非表示にするよりもバナー内のテキストを検索します。
次のように表示されるはずです。
0007DA54 61 67 65 6E 74 00 00 00 4F 70 65 6E agent...Open
0007DA60 53 53 48 5F 37 2E 34 70 31 20 52 61 SSH_7.4p1 Ra
0007DA6C 73 70 62 69 61 6E 2D 31 30 2B 64 65 spbian-10+de
0007DA78 62 39 75 32 00 00 00 00 4F 70 65 6E b9u2....Open
矢印キーを使用して、更新する文字列の先頭を強調表示し、置換を入力します。
元のバナーの長さの境界内に収まるように注意してください。また、各単語を「00」に設定する文字列をnullにしたい場合は、Tabキーを押してHEXエリアに戻ることもできます。
変更は次のようになります。
0007DA54 61 67 65 6E 74 00 00 00 48 65 72 65 agent...Here
0007DA60 20 62 65 20 64 72 61 67 6F 6E 73 2E be dragons.
0007DA6C 20 54 75 72 6E 20 42 61 63 6B 00 00 Turn Back..
0007DA78 00 00 00 00 00 00 00 00 4F 70 65 6E ........Open
CTRL + xとYで変更を保存します。
見逃したインスタンスがあるかどうかを確認します(現在は出力されない予定です)。
strings /tmp/sshd.new | grep Rasp
sshdを更新し、適切な方法でサービスを再起動します。
rm /usr/sbin/sshd
cp -p /tmp/sshd.new /usr/sbin/sshd
systemctl restart ssh.service
まだSSHで接続できることを確認してください(そうでなければ、バックアップを復元するか、パッケージマネージャーからOpenSSHを再インストールしてください!):
ssh -vv user@ip
注意!!
OpenSSHを更新すると、バイナリが置き換えられるため、この変更は一時的なものです。
LogLevel ERROR
OpenSSHの新しいバージョンではバナーのみが抑制されると思います。古いバージョンでは、LogLevel QUIET
またはssh -q
必要です。