web-dev-qa-db-ja.com

パスワードで保護されたSSHキーを永久に保存するにはどうすればよいですか?

私はAwesome Window Managerを使用しています

パスワード付きの秘密鍵を永久に追加するにはどうすればよいですか?

答えに触発された ここ 〜/ .ssh/configに秘密鍵を追加しました

〜/ .ssh/configの内容:

IdentityFile 'private key full path'

〜/ .ssh/configの権限:0700

しかし、私にはうまくいきません。

すべてのセッションで手動でキーを追加する場合は機能しますが、よりエレガントな方法を探しています(.bashrcではありません)

編集

  • Gnomeクラシック(エフェクトなし)バージョンの使用。

ssh-copy-ifでSSHキーをリモートホストに追加した後、次のプロンプトがterminal(GNOME Terminal 3.0.1)で表示されますログイン中:

ssh -i .ssh/Password-Protected-Key user@Host
Enter passphrase for key '.ssh/Password-Protected-Key':
  • Awesomeウィンドウマネージャーv3.4.10の使用すでにgnome-keyring-dameonがあったので、他のpidを強制終了し、gnome-keyring-daemon --start | grep SOCK(.profileにも追加しました)(grep)出力を実行しました。

SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh

まったく同じ手順に従いましたが、GUIのssh-addダイアログもありません。

EDIT 2

Unity 11.10仮想マシンから単一のパスワードで保護された新しいキーを作成しましたが、まだパスワードプロンプトを取得できません。

EDIT 3:これは、Awesomeウィンドウマネージャー:(および場合によってはその他の..

9
pl1nk

Unity、またはgnome-keyring-daemonを起動するセッションマネージャーを使用している場合は、Seahorse(パスワードとキー)を使用してキーを確立し、その目的を定義し、パスフレーズを設定し、その公開キーをsshで使用するコンピューター。端末コマンドは必要ありません。

パスワードを作成するには:

  1. [ファイル]-> [新規]を選択し、[Secure Shell Key]を選択します。続行を押します。

  2. わかりやすい名前を入力し、Create and set upを選択します。

  3. キーフレーズを2回入力するように求められます(2回目は、最初に誤って入力していないことを確認するためです。

  4. 公開キーを使用するコンピューターと、キーを使用するコンピューターのユーザー名を入力します。公開鍵は他のコンピューターにコピーされ、必要に応じてそのコンピューターでパスワードの入力を求められます。

これで、My Personal Keysタブにキーが表示されます。

Lightdmにログインしたときにgnome-keyring-daemonが適切に開始され、セッションマネージャーによって再びsshでキーを使用したときに、キーフレーズの入力を求められます。このダイアログボックスでキーフレーズを入力し、Detailsコントロールを選択して、ログインするたびにキーリングのロックを解除するように要求できます。このキーは自動的に提供されます。押す OK

リモートコンピュータへのログインに使用できる別のキーがある場合、この方法でプロンプトが表示されない場合があります。

これが完了すると、最初のSeahorseタブPasswordsに、キー名の「パスワードエントリのロック解除」が一覧表示されます。 「パスワード:ログイン」の前の三角形をクリックして表示します。

2
John S Gruber

パスワードで保護されたSSHキーをセッションおよび再起動後も保持する

これはおそらくあなたが望むものです:キーパスフレーズを一度入力すると、ログインしているときはいつでもそれが利用可能になります。UnityまたはGnomeデスクトップを使用しているほとんどのユーザーで機能します。

  • 公開鍵をリモートサーバーに追加した後に接続すると、GUIのssh-addダイアログが表示されます。

    enter image description here

  • 三角形をクリックして「詳細」を展開すると、以下が表示されます。デフォルトは「ログアウト時にキーリングをロックする」で、セッションごとにパスワードを入力する必要があります。

    enter image description here

  • それをに変更します...自動的にロックを解除します...ログインするたびに、つまり、セッションにログインするたびに動作します-それは「ユーザーパスワードによって制御されます。再起動後も保持されます。

    enter image description here

  • キーパスフレーズを1回入力するだけで、キーはデスクトップ環境への最初の正常なログインを介して認証されます。


AwesomeWMを使用している場合

AwesomeWMのフレッシュインストールでフレッシュユーザーIDでテスト済み

  • デフォルトでは、AwesomeWMssh-agentを使用します。

     $エクスポート| grep SSH 
     declare -x SSH_AGENT_PID = "5479" 
     declare -x SSH_AUTH_SOCK = "/ tmp/ssh-fWCKNnPq5440/agent.5440" 
    
  • 上記の手順を実行するには、ssh-agentではなく、gnome-keyring-daemonをSSH認証デーモンとして使用する必要があります。 lightdmを使用してログインすると、PAMはgnome-keyring-daemonを起動し、ロック解除パスワードを使用してログインキーのロックを解除しようとしますが、実行を続けて使用するには構成に追加する必要があります。

  • ~/.xprofileの最後に次を追加します。

    #!/ bin/bash 
     eval $(gnome-keyring-daemon --start)
     export SSH_AUTH_SOCK 
     export GNOME_KEYRING_PID 
     export GNOME_KEYRING_CONTROL 
    

~/.xprofileファイル内のコマンドは、awesomeウィンドウマネージャーを開始する前にxsessionによって実行され、上記の環境を介してPAMによって開始されたgnome-keyring-daemon --loginプロセスに関連付けられます変数。

  • Lightdmにログアウトしてログインし直し、ssh user@Hostを実行すると、上記のポップアップが表示されます。これらを使用して〜/ .ssh /の秘密鍵をデコードし、gnome-keyringログイン鍵リングに秘密鍵を保存します。

ウィンドウマネージャー/デスクトップ環境の一般的なソリューション

  • gnome-keyring-daemonの代わりにssh-agentを使用することです。このためには、gnome-keyring-daemonを実行する必要がありますand初期化andssh-agentが開始された後にこれを行うか、ssh-agentを開始しないすべて。

  • ssh(実際にはssh-add)は、SSH_AUTH_SOCK環境変数の値に基づいて呼び出す認証エージェントを決定します。これは、export | grep SOCKと入力することで確認できます。

  • これはSSH_AUTH_SOCK=/tmp/ssh-MMFyVlI22130/agent.22130 forssh-agent(キーを保存できるようにするものではありません)

  • しかし、フォームのSSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh" forgnome-keyring-daemon(希望)

  • そのため、値を確認し、ps aux | grep keyringgnome-keyring-daemonが実行されていることを確認します。実行されている場合は、gnome-keyring-daemon --startの結果で初期化します。

  • その後、ssh-add -lと入力して、コンソールで関連する保存されたIDを確認できます。「エージェントなし」と表示された場合、gnome-keyring-daemonの設定を間違えています。

19
ish

問題の解決策は、sshエージェントを使用することです。キーのパスワードを一度ロック解除するだけで、その後、エージェントによってメモリに保持され、自動的に使用されます

  • ssh-keygen -t dsaを使用して秘密/公開キーペアを生成します
  • 公開鍵をリモートマシンにコピーします。通常、これは〜/ .ssh/authorized_keysです(これにはssh-copy-idを使用します)
  • リモートシステムにログインする前にssh-addを実行します。これによりパスフレーズが要求され、保存されます
  • リモートシステムにログインし、パスワードは必要ありません

ssh-agentは.netでよく説明されています。たとえば、次のとおりです。

Ssh-agentのもう1つの利点は、ssh -A [email protected]を使用してリモートシステムにログインすると、プライベートキーをdomain.nameにコピーすることなく、domain.nameコンピューターからパブリックキーを含む3番目のコンピューターにさらにsshできることです。コンピューター(および秘密キーは1回限りのチャレンジ/レスポンスのみが表示されます)。

2
Floyd