SourceTreeとGitHub間のSSH認証がうまくいかない場合に試しておきたいこと
GitHubとSouceTree間のSSH設定のあれこれで、エラーメッセージと一時間近くいちゃいちゃしてとても消耗したので備忘録に残しておく。
リポジトリにアクセスしようとすると「SSHキーによる認証に失敗しました。」とダイアログが出てくる
このダイアログのあと、「FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)」等というエラーログや、それに似たようなログが出るかと思います。
原因はその文意の通り、Gitクライアント(SourceTree)とGitHub間のSSHによる認証がうまくいってないということです。
既に鍵を作ってGithubにも公開鍵登録したはずなんだけど…って場合でも、もういっそのこと最初から鍵を作っていきましょう。
その方法を今回まとめます。
新しい鍵を作る
鍵の形式と強度を選択する
PuTTY Key Generatorの一番下の Parameters の Type of key to generate が "SSH-2 RSA" であることを確認する。また、その下の Number of bits in a generated key が "1024" であることを確認。
鍵を生成する
「Generate」をクリックすると、鍵の生成が行われる。プログレスバーが100%になるまでkeyの欄でマウスを適当にぐりぐりする。マウスの動きによって乱数が発生し鍵になります。丁寧にぐりぐりしても品質の良い鍵ができるというわけではないので適当にぐりぐりしてください。あれです、ゲーセンにあるアンパンマンのポップコーン工場的な感じです。ハンドルをどれだけ早く、激しく、丁寧に、回しても出来上がるポップコーンの品質には影響せず、いつも変わらぬおいしさを提供してくれるやつです。回さないとめっちゃ怠惰なアンパンマンとジャムおじさんのアニメーションが流れて、出来上がりがめっちゃ適当な感じでところどころコーン豆のままだったりしたらめっちゃ面白いと思う。
Key Commentを入力する
ここは任意にコメントを入力できます。鍵を区別するためにも利用でき、パスフレーズ入力を促されたときにも表示される。
パスフレーズを設定する
Key passphrase と Confirm passphrase に任意のパスワードを入力 今後認証時に使用することになるので忘れずに。
秘密鍵を保存する
Save private key をクリックして、「秘密鍵」を保存する。なお、秘密鍵の拡張子は「.ppk」となる。
※ 保存場所は覚えておく
公開鍵を保存する
Save pablic key をクリックして、「公開鍵」を保存する。
※ 保存場所は覚えておく
Pageant Key Listに秘密鍵を登録する
恐らくSourceTreeを起動時にSSH Agent(Pageant)は立ち上がっていると思いますが、念のため、[ツール]→ [SSHエージェントを起動]を選択する。
すると、タスクバーに下記のようなPagentのアイコンが常駐しているので、これをクリック。
すると、Pageant Key Listのウィンドウが出るかと思うので、Add Key で先ほど生成した拡張子が .ppk である"秘密鍵"(PuTTY秘密鍵ファイル)を選択し、Addする。
これで、秘密鍵の登録は完了です。
GitHubに公開鍵を登録する
いよいよ終盤です。
GitHubにアクセスして、SettingページのSSHの設定を開いてください。
右上に [Add SSH Key]ボタンがあるので、クリックする。
すると Add an SSH Key フォームが表示される。
Titleは特に必要ないけど、適当に覚えやすいのを書くとよいかも。
Keyに先ほど作成した"公開鍵"を入力する。
公開鍵のファイルを何か適当なエディタで開いて中身を確認する。
---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20150806" DEFEB3NzaC1yc2EAAAABJQAAAIEA1w3bpEzvI2baOTJkHjhV85Ysu10RYRam/1f4 sExcBlYI2wQpiPHt3JVGKxXwLvthyOQ1rBSra9dWPUcEAp+1exlM7JLNSqMC+Mwe BWGx1ezVZQsMmN+5XQ/bEJuo/umaGs5rx3h3VSXWvZJJhNNclRX1pp6f2VIGnAx+ lvWtajc= ---- END SSH2 PUBLIC KEY ----
中身はこんな感じになってる(例なので乱数の値は適当)。これをそのまま Keyフォーム にコピペしても受け付けてくれない。
なので、
ssh-rsa DEFEB3NzaC1yc2EAAAABJQAAAIEA1w3bpEzvI2baOTJkHjhV85Ysu10RYRam/1f4 sExcBlYI2wQpiPHt3JVGKxXwLvthyOQ1rBSra9dWPUcEAp+1exlM7JLNSqMC+Mwe BWGx1ezVZQsMmN+5XQ/bEJuo/umaGs5rx3h3VSXWvZJJhNNclRX1pp6f2VIGnAx+ lvWtajc=
というように入力します。
どうなってるのかというと、
まず「ssh-rsa 」と打ち込んでます。 ちなみにssh-rsaの後ろに半角スペースが入っているので要注意。
その後改行し、公開鍵の中身、3行目から終わりまでをコピペしてます。
入力したら、Add keyボタンをクリック。完了です。
うまく受け付けてくれない場合は、何回か試行錯誤してみてください。ssh-rsaの後の半角スペースは要確認です。
以上で、GitクライアントとGithub間のSSHの設定は完了です。
プッシュなどしてうまくいくか確認してみてください。
SSHって何ですか
読みましたか。
僕は読んでないんですが…自分ではなんとなく理解してるつもりでいて、でも実際説明しろって言われたら…。時間あったら読みたいな。