私は自分の仕事をリモートのGitリポジトリにgit Push
します。
すべてのPush
はusername
とpassword
を入力するように私に促します。すべてのプッシュでそれを避けたいのですが、それを避けるための設定方法は?
ターミナルを開いてsshキーを作成します。
cd ~ #Your home directory
ssh-keygen -t rsa #Press enter for all values
(commitプログラムが証明書/プライベートおよび公開SSH鍵を使用できる場合にのみ機能します)
上記のステップのためのPuTTY genの チュートリアル はここにあります
この手順は、リモコンの設定方法によって異なります。
GitHubリポジトリで管理権限がある場合は、 設定 に移動して[SSHを追加]をクリックします。キー'。 ~/.ssh/id_rsa.pub
の内容を 'Key'というラベルの付いたフィールドにコピーします。
あなたのリポジトリが他の誰かによって管理されている場合、管理者にあなたのid_rsa.pub
を渡してください。
あなたのリモートリポジトリがあなたによって管理されている場合、あなたはこのコマンドを使用することができます例えば:
scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub
上記の手順を実行してもパスワードプロンプトが表示される場合は、リポジトリURLが次の形式であることを確認してください。
git+ssh://[email protected]/username/reponame.git
とは対照的に
https://github.com/username/reponame.git
リポジトリのURLを確認するには、次のコマンドを実行します。
git remote show Origin
URLを変更することができます:
git remote set-url Origin git+ssh://[email protected]/username/reponame.git
[1]このセクションは Eric P からの答えを取り入れています。
資格情報のキャッシュを有効にするには、次のコマンドを実行します。
$ git config credential.helper store
$ git Push https://github.com/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>
また、キャッシュ有効期限を指定する必要があります、
git config --global credential.helper 'cache --timeout 7200'
認証情報のキャッシュを有効にした後、7200秒(2時間)キャッシュされます。
注:暗号化されていないパスワードをローカルディスクに保存する資格情報ヘルパー。
SSHキーがすでに設定されていて、まだパスワードプロンプトを受け取っている場合は、リポジトリURLが次の形式であることを確認してください。
git+ssh://[email protected]/username/reponame.git
とは対照的に
https://github.com/username/reponame.git
リポジトリのURLを確認するには、次のコマンドを実行します。
git remote show Origin
次のようにgit remote set-url
でURLを変更できます。
git remote set-url Origin git+ssh://[email protected]/username/reponame.git
Git Pushコマンドには--repo
オプションを使うだけです。このような:
$ git Push --repo https://name:[email protected]/name/repo.git
次のようにして git-credential-store を使うことができます。
git config credential.helper store
which はあなたのパスワードを暗号化せずにファイルシステムに保存します :
このヘルパーを使用すると、パスワードは暗号化されずにディスクに保存され、ファイルシステムのアクセス許可によってのみ保護されます。これが許容できるセキュリティのトレードオフではない場合は、git-credential-cacheを試すか、オペレーティングシステムが提供する安全な記憶域と統合するヘルパーを探してください。
デフォルトで15分間パスワードを保存する git-credential-cache を使用してください。
git config credential.helper cache
別のタイムアウトを設定するには、--timeout
を使用します(ここでは5分)
git config credential.helper 'cache --timeout=300'
- Macを使用している場合、Gitには“ osxkeychain”モードがあります。これは、システムアカウントに添付されている安全なキーチェーンの資格情報をキャッシュします。この方法では、資格情報がディスクに保存され、期限切れになることはありませんが、HTTPS証明書とSafariの自動入力を保存するシステムと同じシステムで暗号化されます。
- Windowsを使用している場合、「Git Credential Manager for Windows」というヘルパーをインストールできます。これは、前述の「osxkeychain」ヘルパーと似ていますが、機密情報を管理するためのWindows資格情報ストア。それは https://github.com/Microsoft/Git-Credential-Manager-for-Windows で見つけることができます。 [私の強調]
Sshリンクの代わりにhttpsリンク(https://github.com/org/repo.git
)を使っていました。
[email protected]:org/repo.git
切り替えて問題が解決しました。
あなたのgitクライアントをあなたのOS認証ストアに接続してください。たとえばWindowsでは、資格証明ヘルパーをwincredにバインドします。
git config --global credential.helper wincred
上記の解決策について何度か指摘したいだけです。
git config credential.helper store
この後にパスワードを必要とする任意のコマンドを使用できます。あなたはプッシュする必要はありません。 (あなたはまた、例えばプルすることができます)その後、あなたは再びあなたのユーザー名/パスワードを入力する必要はありません。
Windowsオペレーティングシステムでは代わりにこれを使用してください、これは私のために働きます:
https://{Username}:{Password}@github.com/{Username}/{repo}.git
例えば.
git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git
git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git
git remote add Origin https://{Username}:{Password}@github.com/{Username}/{repo}.git
git Push Origin master
私はパベルが示唆した答えを使いました、そしてそれは私のために働きました。私の違いは、私がそのようにリモートを追加している間にそれをすることでした:git remote add (alias) https://(name:password)@github.com/(the remote address).git
Windowsでの私の解決策:
ssh-keygen -t rsa
(すべての値に対してEnterキーを押します)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
下記のコマンドを実行すると問題が解決しました。
git config --global credential.helper wincred
下記のgithubのドキュメントを参照してください。
https://help.github.com/articles/caching-your-github-password-in-git/
私の知る限りでは、単純にsafeの2つの方法があります:sshまたはpasswdはキーストアを使用して暗号化されています。
cat ~/.ssh/id_rsa.pub
、そこに貼り付け、名前を付けて保存します(そのようなファイルがない場合は、ssh-keygen -t rsa
で自分で作成します - すべてのプロンプトに対してEnter)。git remote set-url Origin git+ssh://[email protected]/username/reponame.git
であなたのリモートを更新してください - あなたはgit remote -v
で最初にそれをチェックすることができます。touch t; git add t; git commit -m "test"; git Push
と入力し、password-freeの世界を楽しむためにyesを確認します。他の人が述べたようにgit config --global credential.helper store
を使うだけでは、あなたの暗号化されていないパスワードは~/.git-credentials
の下にプレーンテキストで保存されるだけで、安全ではありません。
encryptにしてみてください
Sudo apt-get install libgnome-keyring-dev
Sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
git config --global credential.helper store
この場合、あなたは
https://[email protected]/username/reponame.git
を使っています。
PCが安全であるか、パスワードのセキュリティを気にしない場合、これは非常に簡単に実現できます。リモートリポジトリがGitHubにあり、Origin
がリモートリポジトリのローカル名であると仮定して、このコマンドを使用します
git remote set-url --Push Origin https://<username>:<password>@github.com/<repo>
--Push
フラグにより、git Push
コマンドのみのリポジトリのURLが変更されます。 (元の投稿で尋ねられた質問は、git Push
コマンドのみに関するものです。プッシュ操作にのみユーザー名とパスワードを要求するのは、publicGitHub上のリポジトリ.GitHub上のprivateリポジトリもプルおよびフェッチ操作のためにユーザー名とパスワードを必要とすることに注意してください。 --Push flag
を使用したい...)
警告:これは本質的に安全ではありません:
iSP、またはネットワークアクセスをログに記録しているユーザーは、URL内のプレーンテキストでパスワードを簡単に確認できます。
pCにアクセスできる人は誰でもgit remote show Origin
を使用してパスワードを表示できます。
そのため、SSHキーを使用することが回答として受け入れられています。
SSHキーでさえ完全に安全ではありません。 PCにアクセスできるユーザーは誰でも、たとえば、リポジトリを破壊するプッシュを行うことができます。さらに悪いことに、コードに微妙な変更を加えるプッシュコミットを行うことができます。 (プッシュされたコミットはすべてGitHubで明らかに表示されます。しかし、誰かがコードをひそかに変更したい場合は、コミットメッセージを変更せずに以前のコミットを--amend
し、それを強制的にプッシュできます。実際に注意してください。)
しかし、パスワードの公開はworseです。攻撃者がユーザー名とパスワードを知った場合、自分のアカウントからロックアウトしたり、アカウントを削除したり、リポジトリを完全に削除したりすることができます。
または、簡単にするためにandセキュリティ-URLにユーザー名のみを指定することができるため、入力する必要がありますgit Push
のたびにパスワードを入力しますが、毎回ユーザー名を入力する必要はありません。 (私はこのアプローチがとても好きです。パスワードを入力しなければならないので、git Push
を考えるたびに一時停止するので、偶然git Push
することはできません。)
git remote set-url --Push Origin https://<username>@github.com/<repo>
ステップ1 -
下記のコマンドを使用して、Linuxシステム上にSSHキーを作成してください。
ssh-keygen -t rsa -b 4096 -C "your_email"
パスフレーズとファイル名を要求します(デフォルトは〜/ .ssh/id_rsa、〜/ .ssh/id_rsa.pubです)。
ステップ2 -
ファイルが作成されたら、githubアカウントのsshセクションに公開鍵id_rsa.pubを追加します。
ステップ3 -
あなたのマシン上で下記のコマンドを使用してssh-agentに秘密鍵id_rsaを追加してください。
ssh-add ~/.ssh/id_rsa
ステップ4 -
以下のコマンドを使用して、リモートの[email protected]:user_name/repo_name.gitをローカルのgitリポジトリに追加します。
git remote remove Origin
git remote add Origin [email protected]:user_name/repo_name.git
それでおしまい。
これは、gitがclone/pull/push/fetchコマンドでパイプを通して資格情報を送信するためのオプションを提供していないために起こります。それは、credential.helperを与えますが、ファイルシステムに保存したり、デーモンを作成したりします。多くの場合、GITの認証情報はシステムレベルのものであり、それらを安全に保つのはgitコマンドを呼び出すアプリケーションにあります。非常に危険です。
これが私が回避しなければならなかったことです。 1. Gitのバージョン(git --version)は1.8.3以上でなければなりません。
GIT CLONE
クローン作成には、URLをhttp:// {myuser} @ {my_repo_ip_address}/{myrepo_name.git}からhttp:// {myuser}:{mypwd} @ {my_repo_ip_address}の形式に変更してから「git clone URL」を使用します。 /{myrepo_name.git}
次に、次のセクションのようにパスワードのリポジトリを削除します。
消去
今、これは行っているだろうと
アプリケーションがこれらのコマンドを発行するためにJavaを使用している場合は、RuntimeではなくProcessBuilderを使用してください。 Runtimeを使用する必要がある場合は、単一のStringを引数として使用するのではなく、/ bin/bashおよび-cを引数として使用してString配列を引数として使用するgetRunTime()。execを使用します。
GIT FETCH/PULL /プッシュ
少なくともWindows上でTortoiseGITを使用している場合、SSHキーを作成してGITサーバーに転送することが可能です。
> ssh-keygen.exe
> ssh-copy-id [username]@[GIT_server]