Bitbucketにプッシュするたびにパスワードを求めるメッセージを回避する方法

Bitbucketにプッシュするたびにパスワードを求めるメッセージを回避する方法

私は次の助けを借りて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-agentkeychain

これアーチスウィキまたは、/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これらのキーにアクセスしてリモートリポジトリにプッシュできます。

関連情報