私はgshリポジトリをssh上にクローンしました。そのため、プッシュまたはプルしてOriginのマスターと通信するたびに、パスワードを再入力する必要があります。パスワードを何度も入力する必要がないようにgitを設定するにはどうすればいいですか?
ssh-add
を試してみてください。あなたは秘密鍵を実行して保持するためにssh-agent
が必要です(さて、更新された質問に答えて、あなたはまずパブリックキーとプライベートキーを Jefromi説明 として生成するためにssh-keygen
を実行します。あなたはサーバーにパブリックキーを置きます。パスフレーズ、秘密鍵にプレーンテキストのパスワードと同等のパスワードがない場合は、実際には、次に説明するようにssh-agent
が必要です。)
あなたはログインしている間バックグラウンドでssh-agent
を実行したいと思うでしょう。ログインしたら、あなたの鍵を解読するためにエージェントにあなたのパスフレーズを与えるためにssh-add
を一度だけ実行することです。エージェントはあなたの鍵がロック解除されロードされた状態でメモリに座るだけで、どこかにSSH接続するたびに使えるようになります。
すべてのsshファミリーのコマンド1 それからエージェントに相談し、自動的にあなたの秘密鍵を使うことができるでしょう。
OSX(err、macOS)、GNOMEおよびKDEシステムでは、ssh-agent
が通常自動的に起動されます。私の場合と同じように詳細を説明します。あなたはCygwinや他のwindows環境も持っています。
ここから始めてください:man ssh-agent
。
エージェントを自動的に実行するにはさまざまな方法があります。 manページで説明しているように、ログインセッションの他のすべてのプロセスの親になるように実行することができます。そうすれば、それが提供する環境変数は自動的にすべてのシェルに入ります。 (後で)ssh-add
またはssh
を呼び出すと、両方ともマジックソケットパス名などの環境変数を持っているため、両方ともエージェントにアクセスできます。
あるいは、通常の子としてエージェントを実行し、環境設定をファイルに保存し、起動時にすべてのシェルでそのファイルを取得することもできます。
私のOSXとUbuntuシステムは自動的にエージェントの起動設定を行いますので、ssh-add
を一度実行するだけです。 ssh-add
を実行し、それが機能するかどうかを確認してください、そうであれば、あなたはただ再起動ごとに一度それを行う必要があります。
私のCygwinシステムでは手動で行う必要があったので、これを.profile
で行い、.bashrc
ソース.profile
を持っています。
. .agent > /dev/null
ps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || {
ssh-agent > .agent
. .agent > /dev/null
}
.agent
ファイルはスクリプトによって自動的に作成されます。環境変数の定義とエクスポートが含まれています。上記は.agentファイルを取得しようとし、次にエージェントをps(1)
しようとします。うまくいかない場合は、エージェントを起動して新しいエージェントファイルを作成します。 ssh-add
を実行して失敗した場合はエージェントを起動することもできます。
Sudo
でも構いません。HTTPSプロトコルを使用していたため、GitHubにも同様の問題がありました。使用しているプロトコルを確認するには、単に実行します。
git config -l
そしてremote.Origin.url
で始まる行を見てください。プロトコルを切り替えるには
git config remote.Origin.url [email protected]:your_username/your_project.git
これはgitではなくsshの構成に関するものです。まだ行っていない場合は、ssh-keygen
(空白のパスフレーズを使用)を使用してキーペアを作成する必要があります。次に、ssh-copy-id
を使用して、公開キーをリモート宛先にコピーします。複数のキー(たとえば、他の目的のためのパスフレーズを使用したより安全なキー)が必要な場合、またはいくつかの本当に奇妙な複数IDのものが実行されている場合を除き、これは簡単です:
ssh-keygen # enter a few times to accept defaults
ssh-copy-id -i ~/.ssh/id_rsa user@Host
編集:あなたは本当にDigitalRossの答えを読む必要がありますが、パスフレーズでキーを使用する場合、ssh-add <key-file>
を使用してssh-agent
に追加する必要があります(そして明らかにssh-agent
を起動します)ディストリビューションでまだ実行されていない場合)。
リポジトリのクローンを作成したときは、HTTPSではなくSSH URLを使用してクローンを作成したことを確認してください。リポジトリの[クローンURL]ボックスで、URLをコピーする前にSSHプロトコルを選択します。下の画像を参照してください。
HTTPS(推奨)を使用してクローンを作成した場合: -
git config --global credential.helper cache
その後
git config --global credential.helper 'cache --timeout=2592000'
timeout = 2592000(30日数)で30日間キャッシュを有効にします。
今すぐあなたのユーザー名とパスワードを必要とする簡単なgitコマンドを実行してください。
資格情報を一度入力すると、キャッシュは30日間有効になります。
どのgitコマンドでもやり直すと、今度は資格情報は必要ありません。
より詳しい情報は: - GitでGitHubのパスワードをキャッシュする
注:信任状ヘルパーを使用するにはGit 1.7.10以降が必要です。システムの再起動時に、パスワードを再入力する必要があるかもしれません。
Git-bashやterminalでコマンドを実行するよりも直接ファイルを編集したい人のためのMueinの考えを拡張する。
プロジェクトの.gitディレクトリ(ローカルマシンのプロジェクトルート)に行き、 'config'ファイルを開きます。それから[remote "Origin"]を探し、url configを以下のように設定します。
[remote "Origin"]
#the address part will be different depending upon the service you're using github, bitbucket, unfuddle etc.
url = [email protected]:<username>/<projectname>.git
ここには2つの異なることがあると思います。 1つ目は、通常のSSH認証ではユーザーがアカウントのパスワードを入力する必要があるということです(アカウントのパスワードはsshdの設定に応じてさまざまな方法で認証されます)。
証明書を使ってそのパスワードを入力することを避けることができます。証明書を使ってもパスワードを入力する必要がありますが、今回はあなたの秘密鍵のパスワードです(アカウントのパスワードとは関係ありません)。
これを行うには、steveth45によって指摘された指示に従うことができます。
と 公開鍵認証 。
証明書のパスワードを毎回入力したくない場合は、DigitalRossで指摘されているようにssh-agentを使用できます。
これを行う正確な方法はUnixとWindowsに依存しますが、基本的にあなたがログインするときバックグラウンドでssh-agentを実行する必要があり、そしてあなたが最初にログインするとき、エージェントにあなたのパスフレーズを与えるためにssh-addを実行します。すべてのssh-familyコマンドはエージェントに問い合わせて、自動的にあなたのパスフレーズを選びます。
ここから始めてください:man ssh-agent。
Ssh-agentの唯一の問題は、少なくとも* nixでは、すべての新しいシェルに証明書パスワードを設定する必要があるということです。そして証明書は "ロード"され、あなたはそれをsshサーバに対して認証するためにどんな種類のパスワードも入れずに使うことができます。しかし、これはその特定のシェルにあります。
keychain を使うと、ssh-agentと同じことができますが、「システム全体」です。コンピュータの電源を入れたら、シェルを開いて証明書のパスワードを入力します。そして、他のすべてのシェルはその「ロードされた」証明書を使用し、あなたのPCを再起動するまであなたのパスワードは二度と尋ねられることはありません。
Gnomeには Gnome Keyring と呼ばれる同様のアプリケーションがあります。これは、初めて使用するときに証明書のパスワードを要求し、それを安全に保存するので、二度と尋ねられることはありません。
ssh-keygen -t rsa
パスフレーズを要求されたら、それを空白のままにしてください、すなわち単にenterを押してください。それと同じくらい簡単!
もしあなたがgithubを使っているのであれば、彼らはそれをもっとはっきりと説明してくれる(少なくとも私には)とても素敵なチュートリアルを持っています。
私はログインvie sshキーを許可しないがユーザー/パスワードだけでgitリポジトリをクローンしなければなりませんでした。単純なユーザー/パスワードの組み合わせを使うようにGitプラグインを設定する方法が見つからなかったので、期待するツールに依存するLinuxビルドマシンでのビルド前の手順として次のシェルコマンドを追加しました(apt-get install expect):
このISはあなたのパスワードISとしてのこの問題を解決する良い方法ではありません。 IS RSAキー認証ORその他の設定候補を設定する方法がない場合は、それを使用してください。
rm -rf $WORKSPACE &&
expect -c 'set timeout -1; spawn git clone USER@MYHOST:/MYPATH/MYREPO.git $WORKSPACE; expect "password:" {send "MYPASSWORD\r"}; expect eof'
.ssh/configファイルの先頭に1行AddKeysToAgent yes
を追加します。もちろん、ssh-agentは事前に実行されている必要があります。実行されていない場合(prep ssh-agent
で確認)、その後単に実行してくださいeval $(ssh-agent)
これで、キーはシステム全体でメモリにロードされ、パスフレーズをもう一度入力する必要がなくなりました。
解決策の出所は https://askubuntu.com/questions/362280/enter-ssh-passphrase-once/853578#853578 です。
私はWindows上でSSHを使用しているので私はいつもパスフレーズを入力することを避けようとしています。私は自分の.profileファイルを修正して、特定のセッションでパスフレーズを入力するようにしました。だからこれはコードの一部です:
SSH_ENV="$HOME/.ssh/environment"
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV"
echo succeeded
chmod 600 "$SSH_ENV"
. "$SSH_ENV" > /dev/null
ssh-add
}
# test for identities
function test_identities {
# test whether standard identities have been added to the agent already
ssh-add -l | grep "The agent has no identities" > /dev/null
if [ $? -eq 0 ]; then
ssh-add
# $SSH_AUTH_SOCK broken so we start a new proper agent
if [ $? -eq 2 ];then
start_agent
fi
fi
}
# check for running ssh-agent with proper $SSH_AGENT_PID
if [ -n "$SSH_AGENT_PID" ]; then
ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
if [ $? -eq 0 ]; then
test_identities
fi
# if $SSH_AGENT_PID is not properly set, we might be able to load one from
# $SSH_ENV
else
if [ -f "$SSH_ENV" ]; then
. "$SSH_ENV" > /dev/null
fi
ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
if [ $? -eq 0 ]; then
test_identities
else
start_agent
fi
fi
だからこれで私は一度セッションで私のパスフレーズを入力してください..