BitbucketのGit:公開SSHキーをアップロードした後でも、常にパスワードの入力を求められます


180

説明どおり~/.ssh/id_rsa.pubBitbucketのSSHキーに自分をアップロードしましたが、Gitはすべての操作(など)でパスワードを要求します。私は何か見落としてますか?git pull

これはプライベートリポジトリ(他人のプライベートリポジトリのフォーク)であり、次のようにクローンを作成しました。

git clone git@bitbucket.org:Nicolas_Raoul/therepo.git

これが私のローカル.git/configです:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

同じ環境で同じ公開鍵を使用すると、Github上のGitは正常に動作します。
.sshrwx------.ssh/id_rsaです-rw-------.ssh/id_rsa.pubです-rw-r--r--

回答:


265

ssh urlを使用してクローンを作成しますか?

originのURL url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.gitには、httpsを使用している場合、sshキーに関係なくパスワードを要求するように記載されています。

だからあなたがしたいことは次のとおりです:

現在のリポジトリで設定ファイルを開きます。

vim .git/config

そしてからのURLを含む行を変更します

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@bitbucket.org:Nicolas_Raoul/therepo.git

62
あなたは正しいです、ありがとう!私はおそらく間違ったURLでクローンを作成していました。私は中にURLを置き換える.git/configgit@bitbucket.org:Nicolas_Raoul/therepo.git、今では動作します!
Nicolas Raoul


3
リポジトリを作成するときにhttps URLを提案してくれたのはbitbucketでした!どうして!
Denis Kniazhev 2013

4
bitbucketがプライベートである場合、gitプロトコルを使用する場合は、設定でBitBuketのWebサイトにsshキーを追加する必要があることに注意してください。
cevaris 2014年

7
URLをに変更する必要がありましたssh://git@bitbucket.org/userName/repoName.gitssh://接頭辞なしでは機能しませんでした。
trygub 2017

34

ここで説明するようにSSH URL を使用してクローンを作成する場合、プッシュ/プルするたびにユーザー名/パスワードを入力する必要ありません。@manojldsによる上記の答えを確認してください

しかし、HTTPSでクローンを作成し、毎回ユーザー名/パスワードを入力したくない場合は、以下のコマンドで資格情報をキャッシュに保存できます。

git config --global credential.helper 'cache --timeout 3600'

3600(秒)は1時間を意味しますが、要件に応じて変更できます。


@atilkanその場合、マシン/ OSとgitバージョン情報を提供できますか?また、キャッシュ設定を設定しようとしたときにエラーメッセージが表示されます。
Ajeet Shah

私は誰かのリポジトリをbitbucketから複製しました、そしてこれが私のリモートです。manecs-MBP:LocationTracker manec$ git remote -v origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (fetch) origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (push)
Banee Ishaque K

@AjeetShah間違ったパスワードを入力した場合はどうなりますか?間違ったパスワードもキャッシュしますか?
アナバー

@anavalそれを試してみて、その後キャッシュをクリアまたは無効にした後で正しいパスワードを入力してみませんか?回答を編集して、その方法を教えてください:)
Ajeet Shah

19

その答えはすでに上にあります。上記の確認手順をまとめます。

git remote -vプロジェクトディレクトリで実行します。出力に始まるリモートURLが表示される場合は、https://abc毎回ユーザー名とパスワードが必要な場合があります。

したがって、リモートURLを変更するには、を実行しgit remote set-url origin {ssh remote url address starts with mostly git@bitbucket.org:}ます。

実行git remote -v して、変更されたリモートURLを確認します。

参照:https : //help.github.com/articles/changing-a-remote-s-url/


16

今後ともよろしくお願いいたします。

MacOS> = High Sierraでは、理由により、SSHキーがKeyChainに保存されなくなりました。

使用しssh-add -Kても、再起動しても存続しません。

ここに3つの可能な解決策があります。

私は最初の方法をうまく使いました。私はと呼ばれるファイル作成したconfig中に~/.ssh

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

2
これにはもっと注意が必要です!私は何年もかけて解決策を探しましたが、configファイルが最初にある/.ssh作品は完璧に機能しました!
キットソン、

1
これにより、MacOでの問題が解決されました。cd ~/.ssh+ ls+ nano config(ファイルは既に作成されています)+ Vaidenの回答にコードを追加します。次にX + Yを制御してファイルを保存します。
セバスチャンジケル

9

HTTPリクエストの場合、資格情報(およびパスワード)を直接URLに貼り付けることもできます。

http://username:password@bitbucket.org/...

これにより、毎回資格情報を提供する手間が省けます。.git / config(URL)を変更するだけです。


10
しかし、安全ではありません。パスワードに次のような文字が含まれている場合は機能しません$%
Gank

3
このコメントを読んだ人は誰でも、覚えておいてください:機能するからといって、それが正しいとは限りません。パスワードをどこかに永久にコピーしている場合、それは間違っています。常にフォルダのアクセス許可を777「停止、考え、調査、理解、そして適切に実行」に設定する人と同じです。
dKen 2018年

9

これらの回答のどれも私を助けませんでした、私の問題は少し異なっていました。キーを送信する前に、毎回パスワードを要求していたのはSSHでした。だから私がしなければならなかったことは私のパスワードをこのコマンドにリンクすることでした:

ssh-add -K ~/.ssh/id_rsa

次に、パスワードの入力を求めて保存します。これはあなたがパスワードを要求するたびにそれが言うならあなたが探している解決策かもしれません

キー「/Users//..ssh/id_rsa」のパスフレーズを入力してください:

詳細はこちら

注:私はこれを私のMacマシンで正常に使用しましたが、@ Rob Kwasowskiが以下で指摘するように、大文字のKオプションはMacに固有です。Macを使用していない場合は、小文字を使用する必要がありますk(おそらくMacでも機能しますが、テストしていません)。


1
それは素晴らしいことだが、それは小文字でなければなりませんkssh-add -k ~/.ssh/id_rsa
ロブKwasowski

詳しく説明してもらえますか?
stackPusher

ここで説明されているように:ssh.com/ssh/add、コマンドラインオプションは小文字kではなく、大文字と小文字が区別されるため、大文字ではありません。
Rob Kwasowski

右ですが、大文字のKオプションはキーチェーンにもキーを追加しますが、小文字のkはエージェントにキーを追加するだけです。だから私が尋ねているのは、「なぜキーをキーチェーンにも追加したくないのですか?」
stackPusher

1
プラットフォームの違いに注意してください。これ-KはMacに固有です:help.github.com/en/articles/error-ssh-add-illegal-option----k
Rob Kwasowski

5

私は考えるStep 1ためであるWindowsStep 2のためですLinuxが、あなたはそれが正しくそれを言及忘れてしまいました。
Ajeet Shah

私は自分のWindowsボックスでこれらの3つのステップを実行しましたが、うまくいきました。
webdev5

2
その場合、私はそれをLinux OSに追加したいと思います。同じ効果を得るには、step2とstep3だけが必要です:)
Ajeet Shah

4

以下は、iTerm / Terminalを介したbitbucketへのコマンドラインアクセスを想定しています。

以下のためのMacOSシエラ 10.12.5、私のシステムは、同等の問題を明らかに-ビットバケットへの各接続に私のSSHのパスフレーズを尋ねます。

この問題はmacOS 10.12.2のOpenSSHアップデートに関係しています。これについては、テクニカルノートTN2449で説明しています。

ソリューションを調整することもできますが、〜/ .ssh / configファイルに追加すると、次のように機能します。

Host *
    UseKeychain yes

ssh構成の詳細については、ssh_configのmanページをご覧ください。

% man ssh_config

もうひとつ:良い、ライトアップであり、スーパーユーザ ここにあなたのニーズや設定に応じて、この問題は、さまざまなソリューションについて説明します。


2

SSH URLではなくHTTPS URLを使用してリポジトリのクローンを作成したため、SSHキーを追加した後でも、Bash Shellでパスワードを要求されました。

./.git/configファイルを編集し、url変数の値を変更しhttps://ました。ssh://

例えば

[core]
        ...
        ...
        ...
[remote "origin"]
        url = https://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

変更:

[core]
        ...
        ...
        ...
[remote "origin"]
        url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

1

SSH IDファイルを再確認する必要がある場合があります。BitBucketに保存した同等の公開鍵とは異なる/正しくない秘密鍵を参照するようにBitBucketを誘導している可能性があります。

それをチェックしてくださいtail ~/.ssh/config-あなたは次のようなものを見るでしょう:

Host bitbucket.org
 HostName bitbucket.org
 IdentityFile ~/.ssh/personal-bitbucket-ssh-key

追加のID(職場や自宅など)を追加するには、ssh-add次のコマンドを使用できます。

ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName

ローカルで確認されている秘密鍵を確認したら、この場合は同等の公開鍵を使用できます。

cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy

そして、その暗号をBitBucketに貼り付けます。デバイスはフレンドリーであると認識されているため、git pushは(前述の回答で指摘されているようにSSHクローンを使用している場合)パスワードなしで許可されます。

うまくいけば、これは誰かのためにそれを片付けるのに役立ちます。


0

私と一緒に、「git clone ssh://git@stash.xxx.com:7999 / projName / projA.git」を実行しましたが、私が複製したこの新しいリポジトリのパスワードの入力を求められたので、.gitを比較して動作する他のリポジトリへの/ configファイル、[remote "origin"]セクションの下のURLであることが判明しました。新しいリポジトリでは上記のsshパスに設定されましたが、動作するリポジトリではhttps:xxxに設定されました。


0

ログインに関して他の奇妙さを感じていました。まったく馬鹿げているように見えましたが、私の場合はうまくいきました。MacOSのキーチェーンに行くだけです。サイドバーでログインロックアイコンを見つけます。クリックしてログアウトし、クリックしてログインします。ばかげて聞こえますが、私の問題は解決しました。試してみる価値。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.