私は次の助けを借りてSSHエントリを設定しました。このガイド、以前はうまく動作しました(hg push
パスワードを問わずに実行できました)。私がまだ同じホームディレクトリを使用していることを考えると、それと今の間に何が起こったのでしょうか?
$ cat .hg/hgrc
[paths]
default = ssh://[email protected]/tshepang/bloog
$ hg push
Enter passphrase for key '/home/wena/.ssh/id_rsa':
pushing to ssh://[email protected]/tshepang/bloog
searching for changes
...
答え1
SSHエージェントを使用する必要があります。短い答え:試してみてください
$ ssh-add
押す前に。リクエストに応じてパスワードを入力してください。
SSH エージェントを実行していない場合は、次のメッセージが表示されます。
Could not open a connection to your authentication agent.
この場合、1つを起動して環境を設定できます。
eval $(ssh-agent)
その後、コマンドを繰り返しますssh-add
。
見る価値があるSSHエージェントのマンページ。
答え2
この問題を解決する 1 つの方法は、次を使用することssh-agent
ですssh-add
。
$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa:
その後、現在のセッションのパスワードが保存されます。もう一度質問しません。
答え3
次の ~/.ssh/config ファイルを作成(または存在する場合は編集)します。
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
答え4
便宜上、最良のアプローチは、次の答えを組み合わせることです。ジェムそして強い。
単独で使用することは、新しい端末を開くたびに新しいインスタンスを作成することをssh-agent
意味します。初期化時に秘密鍵のパスワードを要求して保存します。これにより秘密鍵はパスワードで保護されますが、パスワードを繰り返し入力する必要はありません。ssh-agent
keychain
これアーチスウィキまたは、/etc/profile.d/
などのシェル構成ファイルでキーチェーンを初期化することをお勧めします。欠点は、端末を開くとキーチェーンが初期化されることです。.bash_profile
.bashrc
より柔軟なアプローチは、これをkeychain
特定のセッションと組み合わせることです。tmux
したがって.bash_profile
:
tsess=$(tmux ls 2>&1)
if [[ "${tsess%%:*}" = "secured" ]] &&
[[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
# start keychain
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
. $HOME/.keychain/$HOSTNAME-sh
fi
tmux
...そして必要に応じてセキュアセッションを開始する場合(キーバインディングから開始)。
#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"
if [[ -z "$SSH_AUTH_SOCK" ]]; then
eval `ssh-agent`
trap "kill $SSH_AGENT_PID" 0
fi
if [[ -z "$PID" ]]; then
urxvtc -title "SSH" -e sh -c "${new}"
else
urxvtc -title "SSH" -e sh -c "${old}"
fi
ssh-add
特定のセッションを開始するとtmux
、キーチェーンは一度だけ初期化されます。セッションが続く限り、ssh
これらのキーにアクセスしてリモートリポジトリにプッシュできます。