このガイド を使用して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
...
Sshエージェントを使用する必要があります。短い答え:試してください
$ ssh-add
押す前。尋ねられたらパスフレーズを入力します。
Sshエージェントをまだ実行していない場合は、次のメッセージが表示されます。
Could not open a connection to your authentication agent.
そのような状況では、1つを開始して環境を設定できます。
eval $(ssh-agent)
次に、ssh-add
コマンドを繰り返します。
ssh agent manpage を見てみる価値があります。
これを解決する方法は、ssh-agent
およびssh-add
:
$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa:
この後、パスフレーズは現在のセッション用に保存されます。再度尋ねられることはありません。
私はSSHキーを管理するために Keychain を使用しています。 Debianでも利用できるので、おそらくUbuntuでも
apt-get install keychain
これが Debianキーチェーンパッケージページ です。ご覧のとおり、プロジェクトはあまり活発ではありませんが、私にとってはうまくいきます。私はまた別の答えでこれについて少しコメントしました ここ
次の〜/ .ssh/configファイルを作成(または、存在する場合は編集)します。
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
便宜上、最適な方法は jmtd と Faheem の回答の組み合わせです。
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
キーにアクセスしてリモートリポジトリにプッシュすることができます。
sshpass
を使用できます:
$ Sudo apt-get install sshpass
$ sshpass -p 'password' ssh username@server
通常のssh
コマンドを追加する前に、sshpass -p yourpassphrase
を追加するだけです。