[email protected]」を実行するときにユーザー名とパスワードを入力するにはどうすればよいですか?

2012年04月07日に質問されました。  ·  閲覧回数 1.5M回  ·  ソース

coordinate picture
2012年04月07日

次のようなHTTPSリクエストにユーザー名とパスワードを提供する方法を知っています。

git clone https://username:[email protected]

しかし、私はこのようにリモートにユーザー名とパスワードを提供する方法を知りたいです:

git clone [email protected]

私はこのように試しました:

git clone username:[email protected]@remote.git
git clone [email protected]:[email protected]
git clone [email protected]@username:password

しかし、彼らは働いていません。

回答

Bassetassen picture
2012年04月07日
1436

Michael Scharfのコメントに基づく:

パスワードを省略して、Bash履歴ファイルに記録されないようにすることができます。

git clone https://[email protected]/username/repository.git

パスワードの入力を求められます。

または、次を使用することもできます。

git clone https://username:[email protected]/username/repository.git

この方法は、GitHubリポジトリから私のために働きました。

Richard Hansen picture
2012年04月08日
228

[email protected]:path/to/repo形式は、ユーザー名user sshを使用してhostにログインするようにGitに指示します。 git help clone

代替のscpのような構文もsshプロトコルで使用できます。

[[email protected]]host.xz:path/to/repo.git/

@前の部分はユーザー名であり、認証方法(パスワード、公開鍵など)はGitではなくsshによって決定されます。 リモートサーバーの構成によってはsshがパスワードを使用しない場合があるため、Gitにはパスワードをsshに渡す方法がありません。

常にパスワードを入力しないようにするには、 ssh-agentを使用します

sshパスワードを常に入力したくない場合、一般的な解決策は、公開鍵と秘密鍵のペア~/.ssh/authorized_keysファイルに入れて、秘密鍵を読み込むことです。 ssh-agentキー入力します。 また、 1回ログインするためのGit over SSHの構成、sshキーパスフレーズに関するGitHubのヘルプページgitoliteのsshドキュメント、およびHerokuのsshキーのドキュメントも参照してください

GitHub(またはHerokuまたは...)で複数のアカウントから選択する

GitHubやHerokuのような場所に複数のアカウントがある場合は、複数のsshキーがあります(アカウントごとに少なくとも1つ)。 ログインするアカウントを選択するには、使用する秘密鍵をsshあります

たとえば、 foobar 2つのGitHubアカウントがあるとします。 foo sshキーは~/.ssh/foo_github_idで、 bar sshキーは~/.ssh/bar_github_idです。 あなたはアクセスしたい[email protected]:foo/foo.gitあなたとfoo占め、 [email protected]:bar/bar.gitあなたにbarアカウント。 ~/.ssh/config以下を追加します。

Host gh-foo
    Hostname github.com
    User git
    IdentityFile ~/.ssh/foo_github_id
Host gh-bar
    Hostname github.com
    User git
    IdentityFile ~/.ssh/bar_github_id

次に、次のように2つのリポジトリのクローンを作成します。

git clone gh-foo:foo/foo.git  # logs in with account foo
git clone gh-bar:bar/bar.git  # logs in with account bar

sshを完全に回避する

一部のサービスは、sshの代わりにHTTPアクセスを提供します。

警告:クローンURLにパスワードを追加すると、Gitはプレーンテキストのパスワードを.git/configに保存します。 HTTPを使用するときにパスワードを安全に保存するには、資格情報ヘルパーを使用します。 例えば:

git config --global credential.helper cache
git config --global credential.https://github.com.username foo
git clone https://github.com/foo/repository.git

上記の場合、Gitは15分ごとにパスワードを要求します(デフォルト)。 詳細については、 git help credentialsを参照してください。

Rob Rose picture
2018年05月06日
51

@Bassetassenの回答のコメントで、@ ploscoは、少なくともgit clone https://<token>@github.com/username/repository.gitを使用してGitHubからクローンを作成できると述べています。 クローンを自動化しようとしているときに私がしたように誰かがこの答えに出くわした場合に備えて、私はそれを行う方法を拡張しようと思いました。

GitHubには、これを行う方法に関する非常に便利なガイドがありますが、自動化の目的ですべてを1行に含めたい場合の対処方法については説明していません。 クローンURLにトークンを追加すると、トークンがプレーンテキストで.git/config保存されることを警告し

1.トークンを作成します

GitHubには、トークンの取得方法に関するガイド全体がありますが、ここにTL; DRがあります。

  1. [設定]> [開発者設定]> [パーソナルアクセストークン]に移動します
  2. 「新しいトークンの生成」をクリックして、パスワードをもう一度入力します。 (別の直接リンクがあります
  3. 説明/名前を設定し、「レポ」権限を確認して、ページの下部にある「トークンの生成」ボタンを押します。
  4. ページを離れる前に新しいトークンをコピーして

2.リポジトリのクローンを作成します

@ploscoが与えたコマンドgit clone https://<token>@github.com/<username>/<repository>.gitと同じように、 <token><username><repository>をあなたの情報に置き換えてください。

特定のフォルダにクローンを作成する場合は、次のように最後にフォルダアドレスを挿入します。 git clone https://<token>@github.com/<username>/<repository.git> <folder> 、ここで<folder>は、ご想像のとおり、クローンを作成するフォルダです。 もちろん、他の場所と同じように、ここでは...~などを使用できます。

3.痕跡を残さない

あなたがしていることがどれほど敏感かによっては、これらすべてが必要なわけではありません。

  • しばらく使用するつもりがない場合は、トークンをぶら下げたままにしたくないので、トークンページに戻って、その横にある削除ボタンを押します。
  • リポジトリが再度必要ない場合は、 rm -rf <folder>削除します。
  • リポジトリが再度必要であるが、再度自動化する必要がない場合は、 git remote remove originを実行してリモートを削除するか、 git remote set-url origin https://github.com/<username>/<repository.git>実行してトークンを削除できます。
  • bashの履歴をクリアして、トークンがログに記録されたままにならないようにします。 これを行うには多くの方法があります。この質問この質問を参照してください。 ただし、最初から保存されないようにするために、上記のすべてのコマンドの前にスペースを付ける方が簡単な場合があります。

私はプロではないので、あらゆる種類のフォレンジック作業の痕跡が残らないという意味で、上記は安全ではない可能性があることに注意してください。

Santosh Kumar Arjunan picture
2019年04月17日
29

多くの答えがありますが、ユーザー名やパスワードに特殊文字が含まれていると、繰り返し問題に直面します。

gitのユーザー名とパスワードをURLエンコードし、URL自体の一部として使用します(セキュリティ上の懸念がない場合)。

たとえば、ユーザー名のURLエンコードされた値

'user + 1'はuser%2B1です

およびパスワードのURLエンコードされた値

'Welcome @ 1234'はWelcome%401234です

次に、GITクローンのURLは次のようになります。

git clone https://user%2B1:Welcome%[email protected]は完全に機能しますが、

git clone https:// user + 1:Welcome @ 1234 @ actual-git-url-for-the-repoは、403エラーを出します

お役に立てれば。

念のため、オンラインでURLエンコードしたい: https

Anshuman Bardhan picture
2019年12月11日
21

問題が発生している場合は、次の引数に従って、特別なケースに置き換えてください。

! # $ & ' ( ) * + , / : ; = ? @ [ ]

%21%23%24%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D

だから例えば-

実際のURL: https://[email protected]:[email protected]@git/reponame.git

使用するソリューションURL: https://usern%40me:p%[email protected]/reponame.git

BehrouzMoslem picture
2018年07月02日
15

私はこの問題を次の方法で解決しました。

enter image description here

Ore4444 picture
2018年10月16日
11

Windowsではgit clone実行すると、次の手順でGitHubログインウィンドウが再トリガーされます。

  • 「資格情報マネージャー」のスタートメニューを検索する
  • 「Windows資格情報」を選択します
  • GitまたはGitHubに関連する資格情報をすべて削除します

result

Rohan picture
2018年09月05日
6
git config --global core.askpass

同じ方法でクローンを作成する前に、これを最初に実行してください。修正する必要があります。

Rakib picture
2020年04月28日
3

http/httpsを使用していて、ユーザー入力やユーザープロンプトをまったく必要とせずにプロセスを完全に自動化することを検討している場合(たとえば、CI / CDパイプライン内)、次のアプローチを使用できます。 git credential.helper活用する

GIT_CREDS_PATH="/my/random/path/to/a/git/creds/file"
# Or you may choose to not specify GIT_CREDS_PATH at all.
# See https://git-scm.com/docs/git-credential-store#FILES for the defaults used

git config --global credential.helper "store --file ${GIT_CREDS_PATH}"
echo "https://alice:${ALICE_GITHUB_PASSWORD}@github.com" > ${GIT_CREDS_PATH}

ここで、前のシェルコマンドまたはパイプライン構成などからALICE_GITHUB_PASSWORD環境変数を設定することを選択できます。

「ストア」ベースのgit-credential-helperは、パスワードと値をプレーンテキストで保存することを忘れないでください。 したがって、トークン/パスワードの権限が非常に制限されていることを確認してください。


今すぐ簡単に使用します。https://[email protected]/my_repo.gitあなたの自動化されたシステムは、レポをフェッチする必要がどこに-それはのための資格情報を使用しますalicegithub.com git-によってストアとして資格情報ヘルパー。

Michael M picture
2019年10月30日
1

これは優れたStackOverflowの質問であり、回答は非常に有益であり、最近遭遇した厄介な問題を解決することができました。

私が働いている組織は、 Atlassian's BitBucket製品(Githubではない)を使用しています。これは基本的にGitHubのバージョンであるため、リポジトリを完全にオンプレミスで保護できます。 チェックアウトした新しいリポジトリにパスワードが必要であるという点で、@ coordinateと同様の問題が発生していました。 私の資格情報はすべてのBitBucketプロジェクトでグローバルに保存されていたため、資格情報が失われた原因がわかりません。

つまり、次のGITコマンド(ユーザー名のみを指定)を入力すると、Gitの資格情報マネージャーにパスワードの入力を求められ、保存することができました。

git clone https://[email protected]/git/[organization]/[team]/[repository.git]

注:括弧で囲まれたディレクトリサブパスは単に内部参照を参照しており、ユーザーによって異なります。