公開鍵認証を使用して目的のリモートサーバーに接続するsshのパスワードなしのセットアップをセットアップしましたが、すべてうまくいきました。
パスフレーズを使用して秘密キーのロックを解除しています。これを使用して solution —問題は、システムを起動するたびにパスワードを要求することです。
これは問題があるとわかったので、一度だけ一度に入力したいので、次回セッションを起動するときに、入力する必要はありません。もう一度入力してください。パスフレーズを保持し、セッション全体で機能する(再起動後も存続する)キャッシュされたキーのようなものはありますか?
Sshパスフレーズをそのままにしながら、これらすべてを達成することは可能でしょうか?
ssh-keygen -p
を実行します。これにより、キーに設定されているパスフレーズを削除できます。パスフレーズが設定されていない場合は、クリアテキストで保存され、ロックを解除せずに使用できます。
$ ssh-keygen -p
Enter file in which the key is (/home/user/.ssh/id_rsa):
Enter old passphrase:
Key has comment ''
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
パスフレーズを要求されたらEnterキーを押すだけで、パスフレーズを設定しません。その後、自由にキーを使用できます。
keychain
を使用したい。
keychain
プログラムは、キーキャッシュプログラムssh-agent
のインスタンスを管理します。 ssh-agent
を開始すると、2つの環境変数が作成され、評価されます。通常、ssh-agent
が開始されているシェルが閉じている場合、これらの環境変数は失われます。 keychain
プログラムは、ログイン全体でこれらの変数を追跡し、~\.keychain
ディレクトリにシェルスクリプトを提供します。
keychain
を実行するにはいくつかの方法があります。1つはコマンドラインから手動で実行する方法です。シェルを起動するたびに、以下を使用します。
eval `keychain --eval`
これは、実行中の場合はssh-agent
を検出し、実行中の場合は開始します。どちらの方法でも、keychain
でevalを使用すると、必要な環境変数が設定され、次のコマンドを使用してキーを追加できます。
ssh-add <private-keyfile>
private-keyfile
にパスワードがある場合、ssh-add
の実行中にそのパスワードを入力するように求められますが、ssh-agent
が実行されている限り、最後に入力する必要があります秘密鍵のパスワード。
keychain
の評価によりSSH_AUTH_SOCK
環境変数が設定されるため、ssh
を実行すると、ssh-agent
を使用して認証が行われます。
もう1つの提案は、_ このStackExchangeの回答 で提案されているように、keychain
実行を.bashrc
ファイルに追加することです。
keychain
を終了するには、次のコマンドを入力します。
keychain --stop mine
または、ssh-agent
のすべてのインスタンスを停止する場合は、次のコマンドを入力します。
keychain --stop all
注:ssh-agent
などのサービスを使用すると、認証されたキーをメモリに格納することにより、パスワード付きの秘密キーファイルのセキュリティが無効になります。これは、特にメモリのサイドチャネル攻撃では安全ではありません。キーのセキュリティに関心がない場合は、@ vidarloの提案に従って、秘密キーのパスワードを削除するのがより簡単な解決策です。
簡単な答えはノーです。
再起動後も維持されると、目的(つまり、保護)が無効になります。
ただし、ログインセッション間、さらには複数の端末間でも維持できます。
ログインセッション間で維持したいが、端末ごとに1回パスワードを入力してもよい場合は、eval $(ssh-add)
を_.bash_profile
_に追加します。
システムの再起動ごとに1回行う場合は、キーチェーンをインストールし、_~/.ssh/config
_ファイルを変更してキーをキーチェーンに追加し(_AddKeysToAgent yes
_)、上記の手順も実行します。