1. ホーム
  2. ギット

[解決済み】Git over SSHで一度だけログインするように設定する

2022-04-12 16:34:21

質問

sshでgitリポジトリのクローンを作りました。そのため、pushやpullによってオリジンのマスターと通信するたびに、パスワードを再入力する必要があります。どうすれば、パスワードを何度も入力する必要がないようにgitを設定できますか?

解決方法は?

試してみる ssh-add が必要です。 ssh-agent を実行し、秘密鍵を保持する必要があります。

(OK、更新された質問に答えると、最初に ssh-keygen として、公開鍵と秘密鍵を生成します。 ジェフロミ 説明 . 公開鍵をサーバーに置くのです。パスフレーズを使用しなければ、秘密鍵の中に平文のパスワードと同等のものが入っていることになります。しかし、パスフレーズを使う場合は、現実問題として ssh-agent を、以下に説明します)。

を実行するようにしたい。 ssh-agent をログイン時にバックグラウンドで表示します。ログインした後は ssh-add 一度だけ、あなたのパスフレーズをエージェントに伝え、あなたの鍵をデコードするために。エージェントは、あなたの鍵のロックを解除し、読み込んだ状態でメモリに格納され、あなたがどこかにsshするたびに使用できるようになります。

すべてのssh-familyコマンド 1 はエージェントを参照し、自動的にあなたの秘密鍵を使用することができるようになります。

OSXの場合(err, マックOS )、GNOME、KDEシステム。 ssh-agent は通常、自動的に起動してくれます。私のように、Cygwinや他のWindows環境では、これが確実に実行されない場合のために、詳細を説明します。

ここからスタート man ssh-agent .

エージェントを自動的に実行するには、様々な方法があります。manページで説明されているように、ログインセッションの他のすべてのプロセスの親になるように実行することができます。そうすれば、エージェントが提供する環境変数が自動的にすべてのシェルに反映されます。あなたが(後で)起動するとき ssh-add または ssh というのは、環境変数にマジックソケットのパス名などを設定することで、両者ともエージェントにアクセスできるようになるからです。

あるいは、エージェントを普通の子として実行し、環境設定をファイルに保存し、起動時にすべてのシェルでそのファイルをソースとすることもできます。

私のOSXとUbuntuシステムでは、エージェント起動のセットアップを自動的に行うので、私がしなければならないのは ssh-add を一度だけ実行します。 試しに ssh-add を実行し、動作するかどうかを確認します。動作するようであれば、再起動ごとに1回だけ実行すればよいでしょう。

私の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 ファイルをソースにしようとし、その後、.agent ファイルをソースにしようとします。 ps(1) エージェントを起動します。うまくいかない場合は、エージェントを起動し、新しいエージェントファイルを作成します。また、単に ssh-add を実行し、失敗した場合はエージェントを起動します。


1. そして、ローカルとリモートでも sudo を適切なpam拡張子で使用します。