github:サポートされている認証方法はありません


97

私はgithubを使用しており、過去に自分のラップトップにファイルを正常に追加して同期しました。

最近、私は実行後に「PuTTY Fatal Error:Disconnected:No supported authentication methods available」を取得し始めました:

git pull origin master(またはpush)

しかしながら

ssh git@github.comは正しい応答を返します:エラー:こんにちはユーザー名!認証は成功しましたが、GitHubはシェルアクセスを提供していません。github.comへの接続が閉じられました。

GitHubを掘り下げた後、私はこの死体を見つけました:

サポートされている認証方法はありません sshが機能しない場合、gitがsshを話すクライアントを見つけるために使用する環境変数GIT_SSHに注意する必要があります。git installは、plink.exe(GIT_SSH経由)を使用して認証を実行している可能性があります。その場合は、pageant.exeが実行されていることと、github用に作成したキーがロードされていることを確認してください。これにより、plink.exeのキーが提供されます。これがないと、上記のエラーが発生します。

plink.exeまたはpeagant.exeが何であるかわからない.. ssh git@github.comが正しく認証されているように見えるという事実は、ここでの最善の解決策は何であるのか不思議に思う..私は間違いなく私の設定を複雑にしたくない必要。

回答:


100

「.profile」という名前のファイルをホームディレクトリに作成できます。私にとっては、C:\ Users \ [user]です。

そのファイル内に、次のコード行を挿入します。

GIT_SSH="/usr/bin/ssh.exe"

これにより、GIT_SSH環境変数がgitに含まれているsshクライアントを使用するように設定されます。

Git Bashコマンドラインを開始すると、.profileスクリプトが実行されます。

編集:これは私の.profileです。最初にgitコマンドプロンプトを起動したときにパスワードを要求され、その後、コンピューターを再起動するまでパスワードを記憶します。非常に便利なので、何かをするたびにパスワードを入力し続ける必要はありません。

SSH_ENV="$HOME/.ssh/environment"
GIT_SSH="/usr/bin/ssh.exe"

function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cygwin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

8
+1 Putty / Pageantをgitのsshのニーズに使用するときに問題があっただけです。組み込みのsshクライアントを使用すると、驚くほどうまくいきます。これが、ssh git@github.comを自分で実行すると正常に戻る理由を説明していますが、gitに構成済みツール(Putty / Pageant)を使用させると、そうではありません。
エンリケイン

14
私にとっては、GIT_SSH = "/ bin / ssh.exe"(Windowsの場合)だけです。ありがとう!
Martin Konicek

1
@ジャスティンは、mingw32プロンプトを使用していますか?
レックスモーガン

2
Windows 7でcygwinを使用すると、上記の答えは機能しましたが、私はGIT_SSHto .bash_profileとnot をする必要がありました.profile
Gabe

2
私の場合、Git Bashを使用するWindows 10の場合、それはGIT_SSH="D:\Program Files\Git\usr\bin\ssh.exe"
PaulH

31

TortoiseGitの使用

TortoiseGit>設定...ネットワーク... SSHクライアント: C:\Program Files\Git\usr\bin\ssh.exe

場所は私によって異なります。あるコンピュータではC:\Program Files (x86)\Git\bin\ssh.exe

Tortoisegit


5
ありがとう。これはうまくいきました。注:特定のマシンで「ssh.exe」がどこにあるかを正確に探し回る必要があるかもしれません。私にとってそれはC:\ Program Files \ Git \ usr \ bin \ ssh.exe(おそらく古いマシン上)
でした

10

「... plink.exeまたはpeagant.exeが何であるかわからない...」

質問:plinkとpageantはPuTTYスイートの一部です。これはLinuxとWindowsをサポートするSSHの実装であり、Windowsでは完全に支配的です。

SSH

Secure Shell(SSH)は、データ通信を保護するための暗号化ネットワークプロトコルです。クライアントサーバーアーキテクチャの安全でないネットワーク上に安全なチャネルを確立し、SSHクライアントアプリケーションをSSHサーバーに接続します。一般的なアプリケーションには、リモートコマンドラインログイン、リモートコマンド実行などがありますが、ネットワークサービスはSSHで保護できます。

これまでにTelnetを使用したことがある場合は、そのようです(ただし、より安全です)。これにより、Linuxホストのbashシェル(コマンドライン)にリモートアクセスできます。

パテ

PuTTYは無料のオープンソースターミナルエミュレーター、シリアルコンソール、ネットワークファイル転送アプリケーションです。SCP、SSH、Telnet、rloginなど、いくつかのネットワークプロトコルをサポートしています...

Windowsでは、SSHプロトコル(上記)の下でLinuxホストのコマンドラインにリモートアクセスするための主要なソフトウェアです。Windowsでは、.exe拡張子は実行可能ファイル用です。したがって、Linuxを使用している場合、plink.exeとpageant.exeに関するこれらの注意事項はおそらく当てはまりません。PuTTYに含まれるもの

Plink:PuTTYバックエンドへのコマンドラインインターフェイス

Pageant:PuTTY、PSCP、Plink用のSSH認証エージェント

から(http://en.wikipedia.org/wiki/Secure_Shell#Key_management

公開鍵がリモートエンドに存在し、一致する秘密鍵がローカルエンドに存在する場合、パスワードを入力する必要はありません...追加のセキュリティのために、秘密鍵自体をパスフレーズでロックできます。

したがって、githubはLinuxマシンでホストされ、SSHを使用して接続を保護します。SSHはパスワードまたはキーで認証し、多くのホスト(github?)はキーでのみ認証します。セットアップはキーで認証しようとしているようです。キーとホストは1対1ではありません。同じホストに2つのキーを使用したり、同じキーに2つのホストを使用したりできるため、それらを管理する必要があります。Windowsを使用している場合、SSHセッションはおそらくplinkを介してアクセスされ、キーはおそらくPageantによって管理されます。

Pageantをロードするたびに必要なキーをインポートします。「キーをインポートする」と書かれているガイドに従って、それが機能することを確認したが、現在は機能しない場合は、第9章:認証のためのPageantの使用を参照してください。

Windowsを使用している場合の最後のヒント:さまざまなツールによってインストールされたPuTTYスイートの複数のインスタンスがある場合があります。たとえば、TortoiseGitは独自にインストールします。


8

GIT_SSHTortoiseSVNバージョンのを指していたため、この問題が発生しましたPlink.exe。TortoiseGitバージョンを指すように変更し、cmdを再起動すると動作しました。

正確には思い出せませんが、TortoiseSVNのバージョンは32ビットバージョンであった可能性があり、TortoiseGitのバージョンは64ビット(Program Filesでなく、にありますProgram Files (x86))でした。

GIT_SSH環境変数を再確認してください。

私は通常のgitを使用することを好みますcmd.exe(もちろんConsole2で)


あなたは正しく覚えています。同じ問題があり、GIT_SSHはTortoisePlink.exeの32ビットTortoiseSVNバージョンを指しています。TortoiseGitのバージョンにそれを移動することはうまくいきました。
nitwit

6

Windows上のTortoiseGitユーザー向け

当初、私はSSHリポジトリのURLを使用してほとんどのGithub / Bitbucketリポジトリをセットアップしていました。これは、元々、TortoiseGitがすべてのアクションでパスワードを要求するのを防ぐための便利な方法だったためです。

しかし、TortoiseGitをこのように設定することは、常に髪を引っ張るほど苦痛でした。何時間もかかるたびにデフォルトのインストールオプションが機能していないように思えたため(2016年の時点でさえ、shesh!)、正しくセットアップするのに。

しかし、TortoiseGitではHTTPSのパスワード管理が改善され、Githubでは実際には可能な限りHTTPS URLを使用することを推奨しています

SSH URL: git@github.com:User/repo-name.git

HTTPS URL: https://github.com/User/repo-name.git

HTTPSの利点は次のとおりです。

  • SSH鍵の管理または生成なし
  • pageant.exe常に実行している必要はありません(起動のたびにパスワードを要求します)
  • オーストラリアのTortoiseGitを使用すると、HTTPS経由のクローンはSSHの5〜10倍高速であることがわかりました

+ 'git config --global http.sslVerify false'
Mike

5

Pageantを使用していて、PCを再起動した後(または、Pageantを閉じてから再度開いた後)に質問で説明されているエラーが発生する場合:

このエラーは、PageantにGitHub SSHキーがアクティブにロードされていないことが原因である可能性があります。 デフォルトでは、Pageantは起動時に前のセッションのキーを自動的にロードしません。

キーをロードするには:

  1. Pageantを開きます。(Windowsでは、Pageantが実行されている場合、システムトレイにアイコンが表示されます。それをダブルクリックします。)
  2. [キーの追加]ボタンをクリックして、既存のGitHub SSHキーの追加に進みます。

将来この問題を回避するには、起動時にキーを自動的にロードするようにPageantを構成できます。(キーがパスワードで保護されている場合、Pageantは自動的にパスワードを要求します。)

これを実行する手順(Windowsの起動時に実行するようにページェントがすでに構成されていると想定):

  1. Windowsの起動時にPageantを実行するためにWindowsが使用するショートカットを見つけます。(これは、[スタート]> [ファイル名を指定して実行]で開くことができるスタートアップフォルダにある場合がありますshell:startup
  2. ショートカットの[プロパティ]ダイアログで、SSHキーファイルの完全パスとファイル名を[ターゲット]フィールドに追加します。

リファレンスと詳細:http : //blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html


4

私の問題は、githubのユーザー名を使用しようとしたことでした。どうやらGithubを使用しているとき(またはGitのものですか?)、キーベースの認証を使用している場合は、ユーザー名をに設定する必要がありますgit

なぜユーザー名が必要なのかよくわかりません。おそらく、より知識のある人が説明できるでしょうか?


プライベートリポジトリのクローンを作成する場合は、git @ github.com:username / Repository.gitなどのURLになります。私はその背後にある科学についても完全にはわかりませんが、gitはすべてのGithubアカウントの一般的なユーザー名であるようです
Winter

1
PLink / Pageantは正常に動作します。これは実際の問題であり、のようなものを使用するssh://git@github.com/myname/repo.gitとうまくいきます。よくやった。理由については、セキュリティをロックダウンするためだと思います。「git」ユーザーはログインを無効にしているため、その方法でシステムに侵入することはできません。彼らは、GitHubのにも、話に有効なキーを持っている必要があり、それらが有効なキーを持っていたら、彼らはそれらをログに記録するユーザーに対してそれを一致させることができます。
ChokesMcGee

2

Github for Windowsを実行しているWindows 7マシンで、gitバージョン1.8.3.msysgit.0を使用しています。システム環境変数GIT_SSHをC:\ Program Files(x86)\ Git \ bin \ ssh.exeに更新するとうまくいくようです。これにより、OpenShiftのgitリポジトリへの接続に関する問題も修正されました。


2

Windows 8で私のために働いた:GIT_SSH変数はplink.exeを指していました、システム設定でそれをsshバイナリを指すように変更しました、そしてそれは問題を修正しました。sshへのフルパスを確認するには、次のコマンドを実行します。

where ssh

2

この問題を解決するために、私はこれを行いました。

Windows 10でGit Bashを使用していた

私はPageantを起動し、Add Keyを押しました、

ここに画像の説明を入力してください

C:\ Users \ username \ .sshフォルダーに移動し、私のキーを選択しました

ここに画像の説明を入力してください

その後、git pushを実行しようとしましたが、今回はうまくいきました。


Windows PCを再起動するたびにこれを行う必要があることを覚えておいてください。Pageantを起動フォルダにショートカットとして秘密鍵ファイルへの正しいコマンドライン引数を付けて置くかもしれませんが、秘密鍵を作成したときは、ツールトレイのPageantアイコンを右クリックして[キーを追加]を選択し、再起動するたびに入力する必要があります。
webbje


1

私はこれと同じ問題に遭遇しましたが、GIT_SSHソリューションが私のために一度機能するように見えました。コンピューターの再起動後、Git Bashまたはコマンドプロンプトを使用して問題なくプライベートリポジトリを複製できたが、SublimeGitプラグインを使用したSublime Text 3ではそれができなかったので、私はそれが何か別のことに気付いた。私の解決策は単純で、実際には@BlueRaja-Danny Pflughoeft言及したものですが、いくつかの方向を使用できると思いました;)

基本的に~/.ssh/configは、ユーザー名を編集して確認するだけですgit。Githubに特定のSSHキーを使用するように指示することもでき~/.ssh/configます-私のファイルは次のようになります:

Host gh
    Hostname github.com
    User git
    IdentityFile ~/.ssh/github_rsa.pub

私は1日を通して他の多くのことを行うため、Githubに特定のキーを持っていますが、1つしか持っていない場合は、通常、Githubがここで説明する~/.ssh/id_rsa.pubようになります

私は誰もが異なる解決策を持っていることを知っていますが、修正せずにこの記事に遭遇する可能性のある人のためにここに残しておきます。幸運を!


1

TortoiseGitを使用してGitHubからリポジトリを複製すると、このエラーが発生しました。[Load Putty Key]をクリックし、Gitクローンダイアログでキーファイル(* .pkk)を選択することで修正されました。



0

私のgitリモートが思ったとおりではなかったため、この問題が発生しました(直接sshは機能しましたが、git pullは失敗しました)。

はい、はい、私はそれが愚かな間違いであることを知っていますが、それは起こり、確認する価値があります。

使用する git remote -v


0

GitExtensionsをバージョン3.3.0.7719に更新した後、同様の問題が発生しました

どういうわけか、OpenSSHではなくPuTTYを使用するように認証設定を元に戻しました。

そのバージョンでは、OpenSSHを再度有効にするために使用したメニューは次のとおりです。

ここに画像の説明を入力してください

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