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


9

Awesome Window Managerを使用しています

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

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

〜/ .ssh / configの内容:

IdentityFile 'private key full path'

〜/ .ssh / configの権限: 0700

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

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

編集

  • 使用Gnomeの古典(効果なし)バージョンを。

ssh-copy-ifリモートホストにSSHキーを追加した後、ログインするとターミナル(GNOMEターミナル3.0.1)で次のプロンプトが表示されます。

ssh -i .ssh/Password-Protected-Key user@host
Enter passphrase for key '.ssh/Password-Protected-Key':
  • 素晴らしいウィンドウマネージャーv3.4.10 を使用します。私はすでにgnome-keyring-dameon他のpidを殺しgnome-keyring-daemon --start | grep SOCKて(gprofile)出力を実行しました(これも.profileに追加しました):

SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh

まったく同じ手順を踏みましたが、同様にGUIのssh-addダイアログがありません。

編集2

UnityでUbuntu 11.10仮想マシンから新しいパスワード保護キーを作成しましたが、それでもパスワードプロンプトが表示されません。

編集3:これは恐ろしいウィンドウマネージャでは機能しないようです:(そしておそらく他の..


1
パスワードで保護されたSSHキーを追加する意味は何ですか?それは目的に
反する

3
@Syzygyさて、常にさまざまなサービスやアプリからのパスワードを入力していますか、それともキーリングを使用してログインパスワードでパスワードのロックを解除していますか?
pl1nk

これ以上の考え/質問、pl1nk?バウンティの猶予期間はまもなく終了します:-)
ish

@izx私はあなたが言及したすべてをチェックしました、そしてすべて期待通りです。私のアップデートで述べたように、私はGnomeも使用していました。バグを報告しましょうか?
pl1nk 2012年

ここでいくつかの手掛かりを見つけるかもしれません。物事が始まる順序が重要であるように見え、gnome-keyring-daemonがdbusに到達することも同様に重要です。
John S Gruber

回答:


2

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にキー名の「パスワードロック解除エントリ」が表示されます。「パスワード:ログイン」の前にある三角形をクリックして表示します。


したがって、この機能はAwesome WMでは機能しません。Awesomeを引き続き使用したいので、回避策を引き続き使用します。
pl1nk

19

パスワードで保護されたSSHキーをセッションと再起動間で保持する

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

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

    ここに画像の説明を入力してください

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

    ここに画像の説明を入力してください

  • 自動ログインに変更します...ログインしているときはいつでも、つまり、セッションにログインしているときはいつでも機能します。ユーザーパスワードによって「制御」されます。再起動しても保持されます。

    ここに画像の説明を入力してください

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


AwesomeWMを使用している場合

新しいユーザーIDでAwesomeWMを新しくインストールしてテスト済み

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

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

  • の末尾に次を追加します~/.xprofile

      #!/ bin / bash
      eval $(gnome-keyring-daemon --start)
      SSH_AUTH_SOCKをエクスポートする
      GNOME_KEYRING_PIDをエクスポートする
      GNOME_KEYRING_CONTROLをエクスポート
    

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

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

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

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

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

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

  • しかし、フォームのSSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh"ためのgnome-キーリング・デーモン (したいです)

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

  • 次に、コンソールで関連する保存済みIDを入力して確認できssh-add -lます。「エージェントがない」と表示されている場合は、gnome-keyring-daemonの設定を誤っています。


まあ、これは見たことがありません!どのダイアログを使用できますか、またはこのダイアログが呼び出すどのコマンドを使用できますか?
pl1nk

@izxこれを使用する場合、ssh-addを使用する必要がありますか?
ジョンSグルーバー、

@JohnSGruberいいえ、秘密鍵がにある限り、~/.ssh使用する必要はありませんssh-add-初めて使用するときにダイアログがポップアップします。これはUnity / Gnomeでのみ機能することに注意してください。チャットでOPがAwesomeWMを使用していることがわかりましたが、これは機能しません!
ish

1
@ pl1nk:回答の終わりに向けて、AwesomeWMの更新されたソリューションを参照してください。
ish

@izx-全体的なサポートをありがとうございます。更新された質問を確認してください。
pl1nk

2

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

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

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

ssh-agentのもう1つの利点は、リモートシステムにログインするとssh -A user@domain.name、domain.nameコンピューターから、秘密鍵をdomain.nameコンピューターにコピーすることなく、公開鍵が含まれている3番目のコンピューターにさらにsshできることです。秘密鍵が表示され、1回限りのチャレンジ/レスポンスのみが表示されます)。


どうやってやるの?送信した指示からは明確ではありません。さらに、このUbuntuは関連していますか?
pl1nk

詳細な手順で投稿を編集しました
フロイド

あなたのソリューションはセッションごとにパスワードを保存しますが、私の場合、私の答えでわかるように、それはgnome-keyringとの競合であるようです。
pl1nk

@ pl1nk:したがって、セッション間でパスワードを保存する必要があります-つまり、ブートごとに1回だけ尋ねられますか?
ish

はい、セッションごとに1回パスワードを入力する必要があります。これは、パスワードで保護されたsshキーの背後にある全体的なアイデアであり、ログイン後に秘密キーファイルにアクセスできないというセキュリティの別のレイヤーを提供します。
フロイド

-1

あなたは使うことができます

ssh-add 'filename or fullpath'

youtキーにパスフレーズがある場合は、パスフレーズを要求されます

次に、パスワードなしで接続できます


1
私が私の質問に述べたように、私はよりエレガントな方法を探しています。
pl1nk

-2

秘密鍵を使用したい場合は、次のようにします。

ssh-keygen -t rsa -N ''

次に:

scp .ssh/id_rsa.pub.ssh/authorized_keys介してマシンの宛先にコピー

scp .ssh/id_rsa.pub user@remote_machine:~/.ssh/authorized_keys

全部終わった。

パスワードなしでリモートマシンに接続:

ssh user@remote_machine

また、パスワードプロンプトはありません。


これにより、毎回鍵のパスワードを尋ねられます。
pl1nk 2012年

1
おそらく、ssh-keygen -t rsa -N ''を実行するときに、パスワードを入力したためです。したがって、上記のコマンドを実行するときは、パスワードを入力せず、「ENTER」キーを押すだけです。
–OctávioFilipeGonçalves2012

さて私はパスワード付きの鍵が欲しいのですが。私は質問を更新しました
pl1nk 2012年

1
OK、なぜパスワードでこれをしたいのか分かりません。通常、この概念は、認証なしでクライアントマシンを認識できるリモートマシンとの接続にのみ使用されます。したがって、このシナリオが不要な場合は、通常のssh接続を実行するだけで済みます。正しい?
–OctávioFilipeGonçalves2012

1
公開鍵をリモートマシンのauthorized_keysにコピーするように人々に伝えることは少し力ずくです... ssh-copy-id user @ remotemachineコマンドを使用する方がはるかに良いです。 APPENDはキーを上書きしません。
フロイド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.