web-dev-qa-db-ja.com

SSHサーバーから公開鍵を取得する

私はこれを長い間探しています。

SSHサーバーからモジュラスと指数を抽出して取得する必要があります。

たとえば、サーバーxxx.xxx.xxx.xxxでsshが実行されていることはわかっていますが(このサーバー/ pingに接続できます)、ユーザー名とパスワードがわからないため、ログインできません。

このサーバーの公開RSAキーのモジュラスと指数を取得する必要があります。

Ssh-keyscanは(ドキュメントから)モジュラス+指数を取得できますが、ssh-rsa1が使用されている場合に限ります。 ssh-keyscanを使用してssh-rsa(2)公開鍵を取得しようとすると、出力モジュラスと指数から取得できません。

出来ますか ?

11
user3157560

できますよ!

公開鍵をgithubからダウンロードし、github.pubファイルに保存します。

ssh-keyscan -t rsa github.com | sed "s/^[^ ]* //" > github.pub

SSH公開鍵形式をX.509公開鍵形式に変換します。

ssh-keygen -f github.pub -e -m pem > github.pem

キーのASN.1エンコーディングを解析して、公開キーのモジュラスと指数を取得します。

cat github.pem | sed "/--/d" | openssl asn1parse | grep "INTEGER" | sed "s/.*://"

結果:

AB603B8511A67679BDB540DB3BD2034B004AE936D06BE3D760F08FCBAADB4EB4EDC3B3C791C70AAE9A74C95869E4774421C2ABEA92E554305F38B5FD414B3208E574C337E320936518462C7652C98B31E16E7DA6523BD200742A6444D83FCD5E1732D03673C7B7811555487B55F0C4494F3829ECE60F94255A95CB9AF537D7FC8C7FE49EF318474EF2920992052265B0A06EA66D4A167FD9F3A48A1A4A307EC1EAAA5149A969A6AC5D56A5EF627E517D81FB644F5B745C4F478ECD082A9492F744AAD326F76C8C4DC9100BC6AB79461D2657CB6F06DEC92E6B64A6562FF0E32084EA06CE0EA9D35A583BFB00BAD38C9D19703C549892E5AA78DC95E250514069
23

最初の線はモジュラスで、2番目の線は指数です。

20
divanov