web-dev-qa-db-ja.com

RSAキーフィンガープリントを計算する

GitHubのSSHキー監査を行う必要がありますが、RSAキーのフィンガープリントがどのように見つけられるのかわかりません。私はもともとLinuxでSSHキーを生成するためのガイドに従っていました。

現在のRSAキーフィンガープリントを見つけるために入力する必要があるコマンドは何ですか?

822
Zakoff

次のコマンドを実行してSSH鍵のフィンガープリントを取得します(-lは新しい鍵を作成するのではなく「リスト」を意味し、-fは「ファイル名」を意味します)。

$ ssh-keygen -lf /path/to/ssh/key

たとえば、私のマシンで実行したコマンドは次のとおりです(RSA公開鍵を使用)。

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)

Ssh-keygenの新しいバージョンで、古いフォーマットと同じフォーマットが欲しい場合はssh-keygen -E md5 -lf <fileName>を実行してください(ありがとう、Lloyd Dewolf)。

ボーナス情報:

ssh-keygen -lfknown_hostsおよびauthorized_keysファイルにも作用します。

find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts'を使って、Linux/Unix/OS Xシステムで最も一般的なものを見つけましょう(他のユーザーのホームディレクトリの中を見たい場合は、rootまたはSudoになる必要があります)。

ssh-add -lは非常に似ていますが、エージェントに追加されたキーのフィンガープリントを一覧表示します。 (OS Xユーザーは、キーチェーンを介したパスワードなしの魔法のSSHはssh-agentの使用と同じではないことに注意してください。)

1088
Marvin Pinto

より新しいSSHコマンドは SHA256 キーとして指紋をリストします。

例えば:

ssh-keygen -lf ~/.ssh/id_dsa.pub 
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)

古いフィンガープリントと比較する必要がある場合は、 MD5 フィンガープリントハッシュ関数を使用するように指定する必要もあります。

ssh-keygen -E md5 -lf ~/.ssh/id_dsa.pub
2048 MD5:4d:5b:97:19:8c:fe:06:f0:29:e7:f5:96:77:cb:3c:71 (DSA)

-E sha1も利用できます

更新...はい...はい...わかっています... SSH用のDSAキーはもう使用しないでください。代わりに古いRSAキーまたは新しい黄道キーを使用してください。

私が上記で使用したコマンドを編集し続けるそれらの「管理者」に。それを変えるのをやめて!あなたは、コマンドと結果の出力を不一致にします。

622
anthony

Ubuntuで自分の鍵を見るには、端末で次のコマンドを入力してください。

ssh-add -l

次のような出力が得られます。 2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23 yourName @ ubuntu(RSA)

しかし、あなたはのようなエラーが出た場合。 Could not open a connection to your authentication agent.
それは、ssh-agentが実行されていないことを意味します。 ssh-agent bash(コメントの@Richardに感謝します)で起動/実行してからssh-add -lを再実行します

25
Komu

鍵ペア(秘密鍵と公開鍵)は同じフィンガープリントを持ちます。したがって、どの秘密鍵がどの公開鍵に属しているのかわからない場合は、それらのフィンガープリントを比較して一致を見つけます。

Marvin Vintoによる最も投票された回答は、 public SSHキーファイルのフィンガープリントを提供します。対応する private SSHキーのフィンガープリントも照会できますが、以下に示すように、より長い一連の手順が必要です。

  1. まだ行っていない場合は、SSHエージェントをロードします。最も簡単な方法は起動することです

    $ ssh-agent bash
    

    または

    $ ssh-agent tcsh
    

    (またはあなたが使用する別のシェル)。

  2. テストしたい秘密鍵をロードします。

    $ ssh-add /path/to/your-ssh-private-key
    

    キーがパスワードで保護されている場合は、パスフレーズを入力するように求められます。

  3. 今、他の人が言ったように、タイプ

    $ ssh-add -l
    1024 fd:bc:8a:81:58:8f:2c:78:86:a2:cf:02:40:7d:9d:3c you@yourhost (DSA)
    

    fd:bc:...はあなたがフォローしているフィンガープリントです。複数のキーがある場合は、複数の行が印刷され、最後の行には最後にロードされたキーのフィンガープリントが含まれます。

  4. エージェントを停止したい場合(つまり、上記のステップ1を実行した場合)、シェルで単に「exit」と入力すると、sshエージェントを読み込む前にシェルに戻ります。

私は新しい情報を追加しません、しかしうまくいけばこの答えはすべてのレベルのユーザーに明らかです。

16

あなたの鍵がSSHエージェントにある場合の最速の方法

$ ssh-add -L | ssh-keygen -E md5 -lf /dev/stdin

エージェントの各キーは次のように表示されます。

4096 MD5:8f:c9:dc:40:ec:9e:dc:65:74:f7:20:c1:29:d1:e8:5a /Users/cmcginty/.ssh/id_rsa (RSA)
11
cmcginty

AWSからのコンテンツの再生 フォーラム ここ、私はそれが私のユースケースに役立つと思ったので - 私のキーのどれが私がAWSにインポートしたものと一致したかチェックしたい

openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c

- primary.pemは確認するための秘密鍵です。

10
Phil
$ ssh-add -l 

Mac OS X v10.8 (Mountain Lion) - v10.10 (ヨセミテ)でも動作します。

フィンガープリントフォーマットを指定するオプション-Eもサポートしています。そのためMD5が必要な場合(GitHubなどでよく使われます)、コマンドに-E md5を追加するだけです。

9
geeklizzard

これは私が DigitalOcean dropsを作成するために私のSSHキーフィンガープリントを得るために使用するシェル関数です:

fingerprint() {
    pubkeypath="$1"
    ssh-keygen -E md5 -lf "$pubkeypath" | awk '{ print $2 }' | cut -c 5-
}

それをあなたの~/.bashrcに入れて、それを調達すれば、そのように指紋を得ることができます。

$ fingerprint ~/.ssh/id_rsa.pub
d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9
7
Bryce Guinta

Windowsでは、 PuTTY / Pageantを実行している場合は、PuTTY(.ppk)キーをPageantに読み込むとフィンガープリントが一覧表示されます。どちらを使っているのか忘れた場合には、とても便利です。

Enter image description here

4
Dmitri R117

SSHエージェントが実行されている場合は、

ssh-add -l

すべてのIDのRSAフィンガープリントを一覧表示するか、または公開鍵を一覧表示する場合は-Lを入力します。

エージェントが実行されていない場合は、次のことを試してください。

ssh-agent sh -c 'ssh-add; ssh-add -l'

そしてあなたの公開鍵のために:

ssh-agent sh -c 'ssh-add; ssh-add -L'

メッセージが表示されたら: ' エージェントにIDがありません。 '、それからあなたは最初にssh-keygenによってあなたのRSAキーを生成しなければなりません。

2
kenorb

Fedoraでは、私は[locate〜/ .ssh]を実行します。

/root/.ssh
/root/.ssh/authorized_keys
0

時々、あなたは~/.sshディレクトリにたくさんの鍵を持っていて、どれがGitHub/Gitlab/etcによって表示されるフィンガープリントと一致するかわからないことがあります。

~/.sshディレクトリにあるすべてのキーのキーファイル名とMD5フィンガープリントを表示する方法は次のとおりです。

cd ~/.ssh
find . -type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;

(パラメータの意味については、 findコマンドに関するこの回答 を参照してください。

1つのキーに属するプライベート/パブリックファイルは同じフィンガープリントを持っているので、重複することがあります。

0
Dan Dascalescu

最初の接続の前にリモートSSHサーバーをチェックするには、 www.server-stats.net/ssh/ を見て、サーバーのすべてのSHHキーを確認します。 。

これはSSL証明書のようなものではありませんが、SSHサーバーに初めて接続する前に必ずしなければならないことです。

0
p974

Google Compute Engineは、Linuxインスタンスのシリアル出力にSSHホストキーのフィンガープリントを表示します。 APIはGCEからそのデータを取得することができ、インスタンスにログインする必要はありません。

私はそれをシリアル出力から以外どこにも見つけませんでした。私は、指紋はもっとプログラマーに優しい場所にあるべきだと思います。

しかし、それはインスタンスの種類に依存するようです。私はDebian 7(Wheezy)f1-microのインスタンスを使っています。

0
re Paul