つい最近、パスワードの代わりにSSHキーを使い始めました(もちろん、GitHubのおかげで)ので、この概念全体についてはかなり新しいことに注意してください。現在私の鍵は単に〜/ .sshの下にありますが、これが良い習慣かどうかはわかりません。例えば。もし私が複数のマシンを持っているなら、私は私の秘密鍵を複製する必要があるだろう、それは私が望ましくないと思う。あるいは、もし私のHDDがkaputになったら、私はそれらのキーを失うでしょう、そしてそれは(私が推測する)同様に望ましくないです。
では、SSH鍵を安全に、便利に、そして確実に保存するためのベストプラクティスは何でしょうか。
スマートカードを使うようなオプションがあるようです( gpg/sshキーを保存するためのスマートカード(Linux) - 何が必要ですか? )、これが一番良い方法ですか?
更新:問題の理由は、多くのサービス(GitHub、AWS EC2など)がサービスを使用するためのSSHキーの設定方法に関するガイドを提供しているが、バックグラウンドがほとんどない(すでにキーが生成されている場合など) ssh-keygen
[1]によって、推奨されるセキュリティ対策は何ですか?)そして、その情報が実際には重要ではないのか、それとも「デフォルトで」知っていると思われるのかは不明です。
この時点までの答えをまとめると(ただし、それらを読んでください。追加するものがある場合は、どうしてください):この場合は、そのままにしても大丈夫です。あなたが他の人からそれらを守る限り、秘密鍵は〜/ .sshで。ただし、キーを紛失した場合は、サービスにアクセスして新しいキーをアップロードまたは生成する別の方法があることを確認してください(通常これが当てはまります)。
[1] GitHubはかつて複数のキーを管理する方法について ヘルプを提供していました 。
例えば。もし私が複数のマシンを持っているなら、私は秘密鍵を複製する必要があるだろう、それは私が望ましくないと思う。
いいえ、実際にはそうではありません。あなたが複数のマシンを持っているなら、あなたはただそれぞれに別々の秘密鍵を作成するだけです。秘密鍵ごとに、同じプロセスを使用して対応する公開鍵をGitHubにアップロードするだけです。
また、私のHDDが容量不足になると、私は私の秘密鍵を失うことになります。
あんまり;秘密鍵をなくした場合は、新しい秘密鍵を生成して対応する公開鍵をアップロードするだけです。
その価値があるために、秘密鍵を複製することは非常に望ましくないことは間違いありません。理想的には、秘密鍵は1つのファイル(たとえば~/.ssh/id_rsa
)で生成され、そのファイルをneverのままにしないでください。ネットワーク経由で転送されません。 (たとえば、バックアップから除外します)非対称認証プロトコルの性質上、秘密鍵を他人の手に渡らないようにする必要があるだけです。あなたが少し船外へ出て行き、自分でそれを見失ったとしても、大したことはありません。 (これは非対称型のencryption秘密鍵、たとえばGPG鍵と混同しないようにしてください)。
両方を実行するために同じユーザーアカウントを使用している場合は、〜/ .ssh /がブラウザで読み取り可能であることを追加します。
それを試してみてください!ホームディレクトリのプライベートキーにブラウザを向けます。楽しいですよ。
だから私は他のユーザーアカウントのホームディレクトリにsshキーを保存することをお勧めします。
パスフレーズ保護キーのWord
look_at_keys.html
9 <HTML>
10 <HEAD>
11 <TITLE>look at keys</TITLE>
12 </HEAD>
13 <FRAMESET cols="20%, 80%">
14 <FRAMESET rows="100, 200">
15 <FRAME src="/Users/yourname/.ssh/stuff.pem">
16 <FRAME src="blah.html">
17 </FRAMESET>
18 <FRAME src="contents_of_frame3.html">
19 </FRAMESET>
20 </HTML>
非常に素晴らしいKeePass2( http://keepass.info/ )という拡張子の付いたツールがあります( http://lechnology.com/software/keeagent/ )
あなたはそこにパスワード、SSHキー、そしてもっとたくさんの情報を保存することができます(公式のKeePassページにはもっともっと便利な拡張機能があります)
SSHキーを使って自動的にログインしたい場合は、KeeAgentを使ってPuTTY、Pageant、およびKeePassをインストールするだけです。正しく設定していれば、PuTTY、Pageant、またはFileZillaでキーを設定する必要はありません。
私はそれを自分で使います、そして、私はそれについてかなり幸せです。私は30以上のVPSとルートサーバーを持っていて、SSHキーをいくつか使っています。そして私がしなければならない唯一のことは、KeePassを開くことです。
秘密鍵を保管することをお勧めします。
私は言うだろう、最高の場所は次のようになります。
さらに良いことには、それをプリントアウトして、それを耐火金庫に入れるだけです。
あなたのsshキーは暗号化されたパーティション内の別のディレクトリに保存することができます。それから-i
でそのディレクトリを指すsshを使うことができます:
ssh -i identity_file [email protected]
詳しい説明(man ssh
):
-i identity_file
公開鍵認証用のID(秘密鍵)を読み取るファイルを選択します。デフォルトは、プロトコルバージョン1の場合は〜/ .ssh/identity、プロトコルバージョン2の場合は〜/ .ssh/id_dsa、〜/ .ssh/id_ecdsa、〜/ .ssh/id_ed25519、および〜/ .ssh/id_rsaです。設定ファイルにはホストごとに指定することもできます。
複数の-iオプション(および構成ファイルで指定された複数の識別情報)を持つことは可能です。 CertificateFileディレクティブで証明書が明示的に指定されていない場合、sshは-cert.pubをidentity filenamesに追加することによって取得されたファイル名から証明書情報をロードしようとします。
セキュリティに対する私のアプローチは、私が情報を個人用と一般用に分けることです。ホームパーティション全体を暗号化したくないので、秘密ファイル(~/.ssh
内のファイルなど)を暗号化パーティションにコピーします。
マルウェアは〜/ .sshに何も見つけられず、おそらくその場所を見つけるためにシステム全体やシェルプロファイルをスキャンしないので、これはかなり効率的なセキュリティを与えると思います。
-F configfile
設定ファイルへのパスを設定します。
P.S私はエイリアスalias ssh='ssh -i ... -F ...'
を作成し、それをあなたのプロフィールに入れます。
P.P.S.私はまだこれをチェックしていません、そして私は他のプログラム(gitのような)がこれらのssh設定でどのように動作するかわかりません。
私は安全な場所に保管する私のユーザディレクトリ設定(.bashrc、.ssh /および他の設定ファイル)を持つtarファイルを持っています。どこかに新しいシェルアカウントを取得したら、そこにtarファイルを解凍します。
あなたは自分の秘密鍵をあなたが信頼するサーバに置くだけでいいでしょう。そうでなければそのサーバ専用に新しい秘密鍵をサーバ上に作成し、それにあなたがアクセスしたいものへのアクセスを許可するべきです。
個人的には、自分の.ssh /ものをいたるところにコピーするだけでいいのです(これは、通常のsshキーでsshにアクセスできることを意味します、なぜならそれはすでにauthorized_keysファイルにあるからです)。