SSHパスワードを再入力せずに「git pull」を実行するにはどうすればよいですか?


96

git/sshを実行するたびにパスフレーズを入力する必要がないように構成できますgit pullか?リポジトリはgithub上のプライベートなものであることに注意してください。

または、代わりに、プライベートGithubリポジトリからコードのデプロイを自動化するためのベストプラクティスは何でしょうか?

追加詳細: FedoraベースのパブリックAMIを実行するEC2インスタンス。



この問題の解決策はありますか?
nim

git 2.11以降(2016年第4四半期)にlibsecretを使用するのも別の方法です:stackoverflow.com/a/40312117/8477066
Hielke Walinga

回答:


69

このリンクをご覧くださいhttps://help.github.com/articles/working-with-ssh-key-passphrases/

しかし、キーを使用するたびに長いパスフレーズを入力したくありません。

私もそうではないです!ありがたいことに、ssh-agentパスフレーズを安全に保存できるように呼ばれる気の利いた小さなツール があり、再入力する必要はありません。OSX Leopard以降を使用している場合は、キーをシステムのキーチェーンに保存して、さらに使いやすくすることができます。ほとんどのLinuxインストールでは、ログイン時にssh-agentが自動的に起動します。


3
17.7kの評判で誰かに少し緊張して答えます。私は質問を誤解しました... ;-)
Fredrik Pihl

3
緊張?安心してください。ここにいる人々の大多数はとても礼儀正しい...そしてそうでない人々は、私よりも大きな問題を抱えています:)
jldupont

2
このリンクは、パスフレーズをssh-agent次の場所に
Mateus Gondim

鍵は使いたくない。単純な私はuser \ passを持っていて、それをgitクライアント側に保存したい
nim

リンクがMac / Widowsオプションのみを提供するのはなぜですか?パスを再入力せずにUnixサーバーでgit pullしたいのですが。なんとかそれを歴史的なプロジェクトで機能させることができましたが、私がそこで何をしたかわかりません。リモートのUNIXマシンにsshすると、キーが渡され、代わりにgit pull(またはプライベートコンポーザーvcs)キーとして使用されるという点ですか?私はここで何かを誤解していると思います。助けて
いただければ幸いです

29

ここで説明するように、パスワードキャッシュを有効にしました。

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

1か月間パスワードをキャッシュするには:

git config --global credential.helper 'cache --timeout=2628000'

おかげで、てむり-私はこの正確な詳細をどこでも探していました。これは機能していませんでしたが、ドキュメントには、それがHTTPS専用であるとは記載されていないようです。
マイクエメリー2015

2
リモートGitリポジトリのSSHベースのURLにパスワード(キーファイルのパスフレーズではない)を使用する場合、パスワードをまったく保存できません。しかし、私はgitコマンドを発行した後、すぐにパスワードを入力してEnterキーを押すことができることに気付きました。パスワードプロンプトが表示されるまで待つ必要はありません。
ADTC、2015年

1
gitはまだパスを尋ねる
nim

12

これを試して:

git config credential.helper store

パスワードを一度入力する必要があります。その後、パスワードはルート内のフォルダに保存されます。

コメントが指摘したように、これはSSHパスワードでは機能せず、HTTPSパスワードでのみ機能します。


1
@nimそれはあなたが答えに反対票を投じるべきだという意味ではありません、私は何がうまくいったかを提案しました、そして誰かがそれが役に立つと思うかもしれません。
ヤンキー

保存パスワードはありません。私はそれを試しても何も起こりません。このようにリモートの場合ssh:// name @ ip / path
nim

1
これは、HTTP基本認証パスワードを保存する場合に機能します。
Phil

4
これはSSHパスワードでは機能せず、HTTPSパスワードでのみ機能します。
Eliezerベルリン

httpsに適しています。これを入力するだけです。次回は、言い換えを入力する必要がある最後の時間です。次回は、パスワードがgitに記憶されます。
ジョナサン

7

あなたの状況は修正されましたが、私にとっては複数のキーが ~/.ssh/

この問題を解決するには、というファイルを作成し~/.ssh/configて次の行を追加する必要がありました。

IdentityFile ~/.ssh/my_key2_rsa

~/.ssh/my_key2_rsa私の鍵はどこですか。


1
このためおかげで、私id_rsaid_rsa.pubのファイルはGitがそれを認識することはない理由であるカスタム名を持っています。参照:linux.die.net/man/5/ssh_config
lasec0203

5

なぜ誰もこれをまだ報告していないのか、私にはわかりません。ただし、最も簡単な方法はAddKeysToAgent yes、.ssh / configファイルの先頭に1行を追加することです。もちろん、ssh-agent事前に実行しておく必要があります。実行されていない場合(ssh-agentターミナルのコマンドで確認)、単に実行しますeval $(ssh-agent)

これが機能することを確認できます。これは、多数のサブモジュールを使用するプロジェクトで、複製されるサブモジュールごとに、sshパスフレーズを入力する必要があったためです。上記のトリックの後、私はもうそれをする必要はありません。

ソリューションのソースは/ubuntu/362280/enter-ssh-passphrase-once/853578#853578です


これは正解です。さらに、ssh-agentのは1つがsystemdに、ユーザーサービスを使用することができます実行しているように
someonewithpc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.