web-dev-qa-db-ja.com

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
...
238
tshepang

Sshエージェントを使用する必要があります。短い答え:試してください

$ ssh-add

押す前。尋ねられたらパスフレーズを入力します。

Sshエージェントをまだ実行していない場合は、次のメッセージが表示されます。

Could not open a connection to your authentication agent.

そのような状況では、1つを開始して環境を設定できます。

eval $(ssh-agent)

次に、ssh-addコマンドを繰り返します。

ssh agent manpage を見てみる価値があります。

363
jmtd

これを解決する方法は、ssh-agentおよびssh-add

$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa: 

この後、パスフレーズは現在のセッション用に保存されます。再度尋ねられることはありません。

48
stefano

私はSSHキーを管理するために Keychain を使用しています。 Debianでも利用できるので、おそらくUbuntuでも

apt-get install keychain

これが Debianキーチェーンパッケージページ です。ご覧のとおり、プロジェクトはあまり活発ではありませんが、私にとってはうまくいきます。私はまた別の答えでこれについて少しコメントしました ここ

29
Faheem Mitha

次の〜/ .ssh/configファイルを作成(または、存在する場合は編集)します。

Host *
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_rsa
20
ness-EE

便宜上、最適な方法は jmtdFaheem の回答の組み合わせです。

ssh-agentを単独で使用するということは、新しい端末を開くたびにssh-agentの新しいインスタンスを作成する必要があることを意味します。 keychainを初期化すると、秘密鍵のパスフレーズが要求され、保存されます。これにより、秘密鍵はパスワードで保護されますが、パスワードを何度も入力する必要はありません。

Arch wiki は、/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キーにアクセスしてリモートリポジトリにプッシュすることができます。

6
jasonwryan

sshpassを使用できます:

$ Sudo apt-get install sshpass
$ sshpass -p 'password' ssh username@server

通常のsshコマンドを追加する前に、sshpass -p yourpassphraseを追加するだけです。

0
belka