[解決済み】Git over SSHで一度だけログインするように設定する
質問
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拡張子で使用します。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Git を使ってタグをリモートリポジトリにプッシュするには?
-
[解決済み] Git リポジトリを特定のフォルダにクローンする方法は?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
git commit リモートエラー [rejected] master -> master (フェッチファースト)
-
[解決済み] リモートの <ブランチ名> とマージするように設定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] git: fatal: リモートリポジトリから読み取れませんでした。
-
[解決済み] LFはgitでCRLFに置き換えられます - それは何ですか、そしてそれは重要ですか?[重複]。
-
[解決済み] このリポジトリで別の git プロセスが実行されているようです。
-
[解決済み] 短いGitバージョンのハッシュを取得する
-
[解決済み] "fatal: This operation must be run in work tree." というメッセージが表示されるのはなぜですか?
-
[解決済み] git clone [email protected] "を実行する際に、ユーザ名とパスワードを指定するにはどうすればよいですか?
-
[解決済み】git: fatal: プロトコル 'http' を扱えません。