回答:
Windowsユーザーの場合、これが起動時に一度ログインするようにGit Bash環境を設定する方法であることに注意してください。~/.bashrc
ファイルを編集します。
eval `ssh-agent`
ssh-add
したがって、Git Bashを起動すると、次のようになります。
Welcome to Git (version 1.7.8-preview20111206)
(etc)
Agent pid 3376
Enter passphrase for /c/Users/starmonkey/.ssh/id_dsa:
Identity added: /c/Users/starmonkey/.ssh/id_dsa (/c/Users/starmonkey/.ssh/id_dsa)
これで、毎回ログインしなくても他のサーバーにSSHで接続できるようになりました。
eval $(ssh-agent)
代わりに書く必要がありました。
ssh-add ~/.ssh/myfile_rsa
copy > ~/.bashrc
git bashでWindowsにbashrcファイルを作成するには、エラーを無視してください
この回答では、SSHキーのパスフレーズではなく、GitHubのユーザー名とパスワードを永続的に保存する方法について説明します。
Windowsでは、実行するだけです
$ git config --global credential.helper wincred
つまり、次にプッシュするときは、通常どおりユーザー名とパスワードを入力しますが、それらはWindows資格情報に保存されます。その後、再度入力する必要はありません。
git
が、設定ディレクティブセットに従って動作が変更されます。
新しい端末を開くときに、SSHパスフレーズを入力する必要がないようにしています。残念ながらstarmonkeyのソリューションでは、すべてのセッションでパスワードを入力する必要があります。代わりに、これを自分の.bash_profile
ファイルに入れます:
# Note: ~/.ssh/environment should not be used, as it
# already has a different purpose in SSH.
env=~/.ssh/agent.env
# Note: Don't bother checking SSH_AGENT_PID. It's not used
# by SSH itself, and it might even be incorrect
# (for example, when using agent-forwarding over SSH).
agent_is_running() {
if [ "$SSH_AUTH_SOCK" ]; then
# ssh-add returns:
# 0 = agent running, has keys
# 1 = agent running, no keys
# 2 = agent not running
ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
else
false
fi
}
agent_has_keys() {
ssh-add -l >/dev/null 2>&1
}
agent_load_env() {
. "$env" >/dev/null
}
agent_start() {
(umask 077; ssh-agent >"$env")
. "$env" >/dev/null
}
if ! agent_is_running; then
agent_load_env
fi
# If your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
# to paste the proper path after ssh-add
if ! agent_is_running; then
agent_start
ssh-add
elif ! agent_has_keys; then
ssh-add
fi
unset env
これにより、新しいターミナルセッションのパスフレーズも記憶されます。ブート後に最初のターミナルを開いたときに一度だけ入力する必要があります。
私がこれを手に入れた場所を信用したいと思います。他人の作品を改変したものですが、どこから来たのか思い出せません。匿名の作者に感謝します!
アップデート2019-07-01:これはすべて必要だとは思いません。私の.bash_profile
ファイルが確実にssh-agentを実行するようにすることで、これが一貫して機能しています。
eval $(ssh-agent)
次に、次のssh
ような構成ファイルを設定します。
touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo 'AddKeysToAgent yes' >> ~/.ssh/config
質問を正しく理解した場合、ビルドサービスで承認済みのSSHキーをすでに使用していますが、すべてのクローンのパスフレーズを入力する必要を避けたいですか?
これを行うには2つの方法を考えることができます。
ビルドサービスがインタラクティブに開始されている場合:ビルドサービスを開始する前にssh-agent
、十分に長いタイムアウト(-t
オプション)で開始します。次に、ssh-add
(msysGitにそれらが必要です)を使用して、ビルドサービスを開始する前に必要なすべての秘密鍵を追加します。すべてのパスフレーズを入力する必要がありますが、サービスの起動ごとに1回だけです。
パスフレーズを入力する必要をまったく避けたい場合は、https://serverfault.com/questions/50775/how-do-i-change-my-で説明されているように、SSHキーからパスフレーズをいつでも削除できます。 private-key-passphrase、空の新しいパスフレーズを設定する。これにより、パスワードプロンプトは完全になくなりますが、以前のオプションよりも安全性が低くなります。
コードをプッシュしようとすると、次のエラーが発生しました。
$ git push origin dev
remote: Too many invalid password attempts. Try logging in through the website with your password.
fatal: unable to access 'https://naushadqamar-1@bitbucket.org/xxxx/xxxx-api.git/': The requested URL returned error: 403
数時間の調査の結果、以下のコマンドを使用する必要があることがわかりました。
$ git config --global credential.helper cache
上記のコマンドを実行した後、GitHubのユーザー名とパスワードを入力するプロンプトが表示されました。正しい資格情報を提供した後、コードをプッシュすることができます。
正しい解決策は次のとおりです。
Windowsのデフォルトターミナル-cmdを実行し、マスタープロファイルのディレクトリを取得します。
echo %USERPROFILE%
上記のディレクトリでGit Bashを実行.bashrc
し、次のコマンドでファイルを作成します
echo "" > .bashrc
.bashrc
お好みのテキストエディターでファイルを開き、GitHubヘルプのコードをそのファイルに貼り付けます。
env=~/.ssh/agent.env
...
COPY WHOLE CODE FROM URL - I can't add it to Stack Overflow because it breaks layout... OMG!
Git Bashを再起動すると、パスワードが要求され(初回のみ)、完了します。再び煩わしいパスワードはありません。
リポジトリサーバーに接続するユーザーauthorized_keys
の.ssh
フォルダーの下にファイルを作成する必要があります。たとえば、ユーザー名を使用しているとすると、次のコマンドbuildservice
をrepo.server
実行できます。
cd ~buidservice
mkdir ./ssh
cat id_rsa.pub >> .ssh/authorized_keys
次に、次のことを確認する必要があります。
対応するid_rsa
秘密鍵はに示されていbuilservice@build.server:~/.shh/id_rsa
ます。
repo.serverのフィンガープリントはbuildservice@build.server:~/.ssh/known_hosts
ファイルに保存されます。通常、への最初のssh
接続試行後に行われrepo.server
ます。
cat id_rsa.pub > .ssh/authorized_keys
すると、既存の承認済みキーが上書きされます。>>
上書きではなく追加に使用します。