端末で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_rsa
0600
また、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
編集者の注意:
私のものではなく、他の人が追加した技術テキストを削除しました。スタイル、文法、タイプミスなどの修正を歓迎します。誰かが追加されました彼の彼女アイデア私のもの答えは感謝しません。ありがとうございます。