WSL2 Ubuntu:ssh-agentを起動し、すべての端末の起動時にSSHキーを自動的に追加する方法

WSL2 Ubuntu:ssh-agentを起動し、すべての端末の起動時にSSHキーを自動的に追加する方法

端末でWSL2を使用しており、Ubuntuがインストールされています。私のエントリに以下を追加しました.bashrc

# Start ssh-agent
# check if ssh-agent is already running
if [ -z "$SSH_AUTH_SOCK" ]; then
     #start ssh-agent
    eval "$(ssh-agent -s)"
fi


# Ask for ssh-add
read -p "Do you want to add your SSH public key? (y/n) " response

if [ "$response" = "y" ]; then
  ssh-add ~/id_rsa
  ssh-add -l
elif [ "$response" = "n" ]; then
  echo "No identity on terminal session"
else
  echo "Invalid response"
fi

私の考えは、新しい端末を開くたびにIDが必要かどうかを尋ねるメッセージを表示し、ssh-agentを起動し、必要に応じてキーを追加することです。最初はスクリプトが機能しているように見え、エージェントのPIDを表示し、SSHパスワードの入力を求めます。これにより、SSHエージェントを表示できますtop。しかし、これらのコマンドの出力を見ても、実際にssh-agentを初期化したりキーを追加したりすることはありません。私もこれをしました、ssh-add -l結果は次のとおりです。The agent has no identities.

これをどのように実行しますか?これはWSLの問題でなければなりません。

答え1

ええと…ロードしてみてください~/id_rsa。通常、キーは~/.sshフォルダにあります。 AFAIR sshは、ファイルとフォルダの権限についても非常に面倒です。 SSHが十分に安全であると見なされないディレクトリにキーがある場合、キーは使用されません。

キーが実際にある場合は、~キー(およびその.pubファイル)を~/.sshそのフォルダに移動します。ファイルとスキーマ~/.sshがあることを確認してください。スキーマも必要です。これを行う方法がわからない場合は、chmod(1)を参照してください。0700~/.ssh/id_rsa0600

また、ssh-addにファイル名を指定する必要はありません。マニュアルページによると:

ssh-add認証エージェントに秘密鍵IDを追加しますssh-agent(1)。引数なしで実行すると、ファイル、、、、および~/.ssh/id_rsaが 追加されます。秘密鍵をロードした後...~/.ssh/id_ecdsa~/.ssh/id_ecdsa_sk~/.ssh/id_ed25519~/.ssh/id_ed25519_sk~/.ssh/id_dsa

簡単に言うと:

  • メインファイルが~/.sshフォルダにあることを確認してください。
  • .bashrcファイルからssh-add

注:問題があっても必ずしも.bashrc良いわけではありません。.bashrcこれは非対話型でロードするときに存在します(ただし、WSLには存在しない可能性があります)。本当に質問したい場合は、答えを読んで、テストを通じてすべてを確保してください。PS1

if test "$PS1"; then
  if [ -z "$SSH_AUTH_SOCK" ]; then
    #start ssh-agent
    eval "$(ssh-agent -s)"
  fi

  # Ask for ssh-add
  read -p "Do you want to add your SSH public key? (y/n) " response

  # and so on...
fi

編集者の注意:

私のものではなく、他の人が追加した技術テキストを削除しました。スタイル、文法、タイプミスなどの修正を歓迎します。誰かが追加されました彼の彼女アイデア私のもの答えは感謝しません。ありがとうございます。

関連情報