私はMac Snow Leopardを使っていて、git
をインストールしました。
試したばかり
git clone [email protected]:cakebook.git
しかし、それは私にこのエラーを与えます:
Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
何が足りないの?
私はssh-keygen
をパスフェーズなしでやろうとしましたが、それでも同じエラーになります。
ユーザーは以前に設定されたssh公開鍵/秘密鍵ペアを生成していませんか?
この情報はtheChawに取り組んでいますが、SSH公開鍵認証をサポートする他のすべてのgitリポジトリに適用することができます。 (例えば gitolite 、gitlab、githubを見てください。)
最初にあなた自身の公開/秘密鍵ペアセットを設定することから始めます。これはDSAかRSAのどちらかを使用することができます、従って基本的にあなたが設定するどんなキーでも動作します。ほとんどのシステムではssh-keygenを使うことができます。
- まずあなたの.sshディレクトリにcdしたいでしょう。ターミナルを開いて実行してください:
cd ~/.ssh && ssh-keygen
- 次にあなたはこれをあなたのクリップボードにコピーする必要があります。
- OS Xでは、次のように実行します。
cat id_rsa.pub | pbcopy
- Linuxでは、
cat id_rsa.pub | xclip
を実行します。- Windowsの場合(Cygwin/Git Bash経由):
cat id_rsa.pub | clip
を実行してください。- Webサイトであなたのアカウントにあなたの鍵を追加してください。
- 最後に.gitconfigを設定してください。
git config --global user.name "bob"
git config --global user.email bob@...
(設定が確実に再ロードされるように、コマンドラインを再起動することを忘れないでください)それはあなたがクローンしてチェックアウトするのが良いはずだということです。
さらに詳しい情報は https://help.github.com/articles/generating-ssh-keys (@Lee Whitneyに感謝します)にあります -
ユーザーが以前に設定したssh公開/秘密鍵ペアを生成しましたか?
eval $(ssh-agent -s)
キーがどこにあるのかを知る
ssh-add ~/.ssh/id_rsa
より広範なトラブルシューティング、さらには自動修復も、以下の方法で実行できます。
ssh -vT [email protected]
ソース: https://help.github.com/articles/error-permission-denied-publickey/ /
このエラーは、Gitの読み取り専用URLではなくSSH URL(読み取り/書き込み)にアクセスしているのに、そのリポジトリへの書き込みアクセス権がない場合に発生する可能性があります。
時にはあなただけの自分のレポをクローンしたい、例えばサーバーにデプロイします。この場合、実際にはREAD-ONLYアクセスのみが必要です。しかしそれは あなた自身の repoなので、GitHubはあなたの好みならSSH URLを表示するかもしれません。この場合、リモートホストの公開鍵がGitHub SSH鍵に含まれていないと、アクセスが拒否されます これが起こると予想されます 。
同等のケースは、あなたがSSH URLで書き込み権限を持っていない他人のレポジトリを複製しようとしたときです。
Wordでは、 あなたの目的がリポジトリのみを複製することを目的としている場合、HTTPS URLを使用する (不要な)公開鍵の検証を回避するSSH URL(https://github.com/{user_name}/{project_name}.git
)の代わりに - ([email protected]:{user_name}/{project_name}.git
)。
更新:GitHubは現在HTTPSをデフォルトのプロトコルとして表示しており、この移動によりおそらくSSH URLの誤用を減らすことができます。
Githubのヘルプ link は私がこの問題を解決するのを助けてくれました。 sshキーがssh-agentに追加されていないようです。これは私がやってしまったものです。
コマンド1:
Ssh-agentが有効になっていることを確認してください。このコマンドはバックグラウンドでssh-agentを起動します。
eval "$(ssh-agent -s)"
コマンド2:
SSHキーをssh-agentに追加します。
ssh-add ~/.ssh/id_rsa
同じエラー報告を受けました。
代わりにHTTPを使用することで修正されました。テスト用のPCには「SSHキー」を設定したくありません。
複製時にURLをHTTPに変更します。
git clone https://github.com/USERNAME/REPOSITORY.git
私の問題は少し違う :既存のローカルリポジトリをリモートに追加するときにURLを設定する。
git remote add Origin ssh://github.com/USERNAME/REPOSITORY.git
修正するには、URLをHTTPにリセットします。
git remote set-url Origin https://github.com/USERNAME/REPOSITORY.git
ところで、あなたはコマンドを使ってあなたのURLをチェックすることができます:
git remote -v
Origin https://github.com/USERNAME/REPOSITORY.git (fetch)
Origin https://github.com/USERNAME/REPOSITORY.git (Push)
これが私のような人に役立つことを願っています。 :D
(少なくとも一部のプロジェクトでは) sshキーのgithubアカウントを持っている必要があります 。
認証エージェントにリストされているキーを見てください(ssh-add -l)
(表示されない場合は、ssh-add/path /に/ your/keyを使用して既存のキーの1つを追加してください(例:ssh-add〜/ .ssh/id_rsa ))
(キーがない場合は、まずキーを作成してください。参照: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html または単にGoogle ssh-keygen)
あなたのgithubアカウントに関連付けられたキーがあることを確認するには :
https://github.com/settings/ssh にアクセスしてください。
ほんの1分前にssh-add -lと入力したときに見たハッシュの1つと一致するハッシュキーを持つ、少なくとも1つのキーが表示されるはずです。
そうでない場合は、それを追加してからやり直してください。
これは私のために働く:
ssh-add ~/.ssh/id_rsa
状況が少し違っていました。リモートサーバーにログオンし、サーバー上でgitを使用していました。同じメッセージが表示されたgitコマンドを実行したとき
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
私が修正した方法は、私のMac上のファイル/ etc/ssh_configを変更することでした。から
ForwardAgent no
に
ForwardAgent yes
_ ssh _ と _ https _ の違いは
https://github.com/USERNAME/REPOSITORY.git
ssh://github.com/USERNAME/REPOSITORY.git
そのため、私は _ https _ から _ ssh _ に変更しましたが、https://
をssh://
に変更しただけです。
しかし真実は:
https://github.com/USERNAME/REPOSITORY.git
[email protected]:USERNAME/REPOSITORY.git
これは私がssh://github.com/USERNAME/REPOSITORY.git
を[email protected]:USERNAME/REPOSITORY.git
に変更したことを意味します。
愚かなエラーが、誰かに役立つことを願っています!
私は私がやったことと私はレポをクローンすることができたことと同じ問題に苦労していました。私は iMac のためにこれらの手順に従った。
最初のステップ:すでに公開SSH鍵があるかどうかを確認します。
ls -al ~/.ssh
を入力します。ディレクトリのリストを調べて、公開SSHキーがすでにあるかどうかを確認します。デフォルトの公開は、次のいずれかのd_dsa.pub、id_ecdsa.pub、id_ed25519.pub、id_rsa.pubです
見つからない場合は手順2に進み、それ以外の場合は手順3に従います。
ステップ2:公開SSH鍵の生成
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Generating public/private rsa key pair
で次のように見えるでしょう。 to"Enter a file in which to save the key,"
のプロンプトが表示されたら、Enterキーを押します。これはデフォルトのファイルの場所を受け入れます。 Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
とプロンプトが出されたら、もう一度Enterを押すだけです。プロンプトで、安全なパスフレーズを入力します。Enter same passphrase again: [Type passphrase again]
再度入力したくない場合はEnter passphrase (empty for no passphrase): [Type a passphrase]
を押してくださいこれはid_rsa.pub
を生成します
ステップ3:SSHキーをssh-agentに追加する
eval "$(ssh-agent -s)"
$ ssh-add -K ~/.ssh/id_rsa
SSHキーをコピーしてgithubアカウントに追加してください。
pbcopy < ~/.ssh/id_rsa.pub
これはあなたのクリップボードにファイルをコピーするでしょう今すぐgithubアカウントを開きます 設定> SSHとGPGキー>新しいSSHキーに行きます それ。出来上がりました.Windowsでは、すべてのアプリがHOMEに同意していることを確認してください。 Msysは驚くほどあなたのためにそれをしないでしょう。 sshとgitが自分の.sshディレクトリがどこにあるかについて合意できないようなので、私は環境変数を設定しなければなりませんでした。
あなたは 企業環境にいますか ?システム変数が最近変更された可能性はありますか? これ SO回答、sshキーは%HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pub
にあります。そのため、%HOMEDRIVE%
が最近変更された場合、gitはあなたの鍵を探す場所、つまりすべての認証情報を知りません。
ssh -vT [email protected]
を実行してみてください。 identity file
がある場所に注意してください。私にとっては、ネットワークレベルでプッシュされる環境変数への変更のため、それはではなく私の通常の\Users\MyLogin
を指すのではなくネットワークドライブを指していました。
ソリューション?私の新しい%HOMEDRIVE%
は私のローカルファイルと同じパーミッションを持っているので、私はちょうど私の.sshフォルダをそこに移動し、そしてそれを1日呼んだ。
みんなこれは私のために働いていた方法です:
1-端末を開いてユーザーに行く[添付の画像を見る]
2- .sshフォルダを開き、id_rsaやid_rsa.pubのようなファイルがないことを確認します
3 - git --version [gitのインストールとバージョンを確認する]
4- git config --global user.email "あなたのメールアドレス"
5- git config --global user.name "あなたの名前"
6- git config --list [自分の名前とメールアドレスを設定したことを確認してください]
7-cd〜/ .ssh
8- ssh-keygen、ファイルの保存を促し、許可する
9- cat〜/ .ssh/id_rsa.pub [あなたの公開鍵にアクセスし、その鍵をgerritの設定にコピーする]
注 :GitではSudoコマンドを使用しないでください。あなたがSudoを使わなければならない非常に正当な理由があるならば、あなたがすべてのコマンドでそれを使っていることを確認してください(おそらくその時点でrootとしてシェルを取得するためにsuを使うほうが良いです)。 SudoなしでSSH鍵を生成してからSudo git Pushなどのコマンドを使用しようとすると、生成したのと同じ鍵は使用されません。
GITの基本的な説明では、SSHの鍵については言及されていません。上記のいくつかのリンクをたどって、さまざまなオペレーティングシステムでこれを行う方法を段階的に説明したgitヘルプページを見つけました(リンクはあなたのOSを検出し、それに応じてリダイレクトします)。
http://help.github.com/set-up-git-redirect/ /
GITHubに必要なすべてを順を追って説明し、「RSAキーを作成するときにパスフレーズを追加する理由」などの詳細な説明も提供します。私はそれが他の誰かに役立つ場合に備えて、私はそれを投稿すると考えました...
最も簡単な方法の1つ
ターミナルへ
git Push <Git Remote path> --all
複数のキーがある場合は、ssh-add private-keyfile
を実行する必要があります。
Rufinusの返事に加えて、 Windows にあるあなたのSSHキーをクリップボードにコピーするための近道は:
type id_rsa.pub | clip
参照:
現在のプロジェクトの設定中にこの問題を経験したばかりで、上記の解決策はどれもうまくいきません。だから私はコマンドssh -vT [email protected]を使ってデバッグリストで実際に何が起こっているのか調べてみた。私の秘密鍵のファイル名がリストに載っていないことに気付きました。そのため、秘密鍵のファイル名を 'id_rsa'に変更してください。これが役立つことを願っています。
それはとても簡単です。以下のコマンドを入力してください
ssh-keygen -t rsa -b 4096 -C "[email protected]"
SSHキーを生成します。ファイルを開き、内容をコピーしてください。 GitHub設定ページに行き、SSHキーをクリックしてください。新しいSSHキーを追加をクリックして、ここに内容を貼り付けます。それはそれです:)あなたは再び問題を見るべきではありません。
現在の作業ディレクトリにパーミッション700を付与する必要があるため、このエラーが発生しました。
chmod -R 700 /home/ec2-user/
メイクファイルを実行しようとすると、 Permission denied(publickey)エラー が発生していました。
上記のSSH手順の代わりに、ネイティブGitHub for Macアプリケーションをインストールすることもできます。
Mac用GitHubのダウンロード から - https://help.github.com/articles/set-up-git#platform-mac
Git hubアカウントでセットアップを完了したら(私はgit hubコマンドラインツールもインストールしましたが、このステップが必要かどうかわからない場合)、私は電子メールを受け取りました -
[GitHub]あなたのアカウントに新しい公開鍵が追加されました
そして私のエラーが修正されました。
それは私のために働いた
ssh -i [your id_rsa path] -T [email protected]
私の場合は、ubuntuを再インストールし、ユーザー名を以前のものから変更しました。この場合、生成されたSSHキーも前のものとは異なります。
現在のssh公開鍵をリポジトリにコピーするだけで問題は解決しました。キーはあなたのユーザーの/home/.ssh/id_rsa.pub
で利用可能になります
私のMACでは、私はこれで解決しました:
cp ~/.ssh/github_rsa ~/.ssh/id_rsa
どういうわけか私のgitはgithub_rsa
ファイルで秘密鍵を見つけるのをやめました。これは特定のレポで発生しました。他のリポジトリでもgitは正常に動作し続けていたということです。
私はそれがバグだと思います。
私はssh -vT [email protected]
を実行しているこの振る舞いを見つけることができました
この奇妙なエラーは、私の場合、gnome-keyring-daemon
がパスワードを必要とするキーの名前を誤って指定していたことの症状でした。
私はここで概説したステップに従い、そして端末を介してパスワードを入力しました。エラー、別名混同のGUIインターフェイスは、解決されました。参照してください: https://askubuntu.com/questions/3045/how-to-disable-gnome-keyring
それは私のために働きました。
あなたの公開鍵はid_rsa.pub;ファイルに保存され、あなたがあなたのアカウントにアップロードする鍵です。これを実行して、このキーをクリップボードに保存できます。
pbcopy <〜/ .ssh/id_rsa.pub
間違ったメールアドレスでSSHキーを生成したため、このエラーが発生しました。私はsshを使って接続できましたが、gitを使っていませんでした。解決策は、私のgithubアカウントのメインのメールアドレスを使って鍵を再生成することでした。
私は同じエラーを受けていました。私の問題はSudoで混在していました。
Git cloneコマンドの前にSudoを付けなければ、クローンを作成したディレクトリを自動的に作成できませんでした。しかしそれをしたとき、私のSSHキーは正しく参照されていません。
それを修正するために、私はそれを書くことができるように私が私のクローンを入れたい親ディレクトリにchmodを通して許可を設定しました。それから私はSudo接頭辞なしでgit cloneを走らせた。それはうまくいった!その後権限を変更しました。完了しました。
これに対する最も簡単な解決策は、別のユーザ名でリポジトリにプッシュしようとしているときです。
git remote set-url Origin https://[email protected]/USERNAME/PROJECTNAME.git
私は私のubuntuシステムで以下のステップに従うことによってこの問題を克服することができました。私はシステムにパスワードなしのSSHを試していたように。
Sudo vi/etc/ssh/sshd_config
1)以下にコメントしました。#トンネルクリアテキストパスワードを無効にするにはnoに変更します。#PasswordAuthentication yes PasswordAuthentication no ---->これをコメントしました。
2)次に、以下のようにsshdデーモンを再起動しました。
service sshd restart
Macの場合:
まず第一に、私はいくつかの標準的なものをチェックすることをお勧めします:
service ssh restart
私には十分でした。
$ cd ~
$ cd .ssh
$ chmod 400 id_rsa
Githubのsshリンクを使用してください。ただし、sshを追加しないように注意してください。単にgit hubのsshタブでリポジトリのクローンを作成してください。
私の経験も共有しましょう
私はアカウント設定で私の公開鍵を入手したGerritリポジトリからいくつかのプロジェクトを複製しようとしていました。
git clone
を最初に作成しようとしたときに、次のエラーが発生しました。
Unable to negotiate with XX.XX.XX.XX port XXX: no matching key exchange
method found. Their offer: diffie-hellman-group1-sha1
私はSSHオプション-oKexAlgorithms=+diffie-hellman-group1-sha1
をどうにかしてgit clone
に渡す必要があることを私は考えました。
うまくいけばGIT_SSH_COMMAND
環境変数は仕事をしました:
export GIT_SSH_COMMAND="ssh -oKexAlgorithms=+diffie-hellman-group1-sha1"
しかしgit clone
はまだ動き始めませんでした..今それは(トピックについての)投げます:
Permission denied (publickey).
私はすでにSSH鍵を手に入れたので、それらを再生成したくありませんでした。私はホストへのプレーンなSSH接続をチェックしました、そしてそれは大丈夫でした:
**** Welcome to Gerrit Code Review ****
Hi XXXXX, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://[email protected]:xxx/REPOSITORY_NAME.git
少し混乱しました。私はもう一度始めて-vvv
オプションでSSHのデバッグをオンにしました。そして私は次のことを見ました:
debug1: read_passphrase: can't open /dev/tty: No such device or address
おそらく、それはGIT_SSH_COMMAND
env変数のオーバーヘッドでした - 私の鍵はパスフレーズで保護されていました(そして私がgitリポジトリHostへのログインをチェックしていたときにそれを入力しました)。
それで、私はその時にこのフレーズを取り除くことにしました。簡単なコマンドは私を助けました:
ssh-keygen -p
それから私は「古いパスフレーズ」のために私のパスフレーズを入力し、そしてちょうどヒットした ENTER それを空のままにするために、すなわち全くパスフレーズなしで、そして私の選択を確認するために「新しいパスフレーズ」で2回。
その後、クローンを作成したばかりのリポジトリをローカルディスクに作成しました。
Adminとして端末を実行してください。
端末があなたの.sshを見ることができないならば、それはそのエラーを返します。