22時に寝ようと思って2時に寝る。

備忘録や日記を書いてます。きょうは早く寝よう。

SourceTreeとGitHub間のSSH認証がうまくいかない場合に試しておきたいこと

GitHubとSouceTree間のSSH設定のあれこれで、エラーメッセージと一時間近くいちゃいちゃしてとても消耗したので備忘録に残しておく。

リポジトリにアクセスしようとすると「SSHキーによる認証に失敗しました。」とダイアログが出てくる

SSHエージェントを起動しますか?

このダイアログのあと、「FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)」等というエラーログや、それに似たようなログが出るかと思います。

原因はその文意の通り、Gitクライアント(SourceTree)とGitHub間のSSHによる認証がうまくいってないということです。

既に鍵を作ってGithubにも公開鍵登録したはずなんだけど…って場合でも、もういっそのこと最初から鍵を作っていきましょう。

その方法を今回まとめます。

新しい鍵を作る

  • SourceTreeを起動する
  • [ツール]→[SSHキーの作成/インポート]を選択
  • PuTTY Key Generatorが起動する

PuTTY Key Generator

鍵の形式と強度を選択する

PuTTY Key Generatorの一番下の Parameters の Type of key to generate が "SSH-2 RSA" であることを確認する。また、その下の Number of bits in a generated key が "1024" であることを確認。

f:id:azuuun:20150806193000j:plain

鍵を生成する

「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のアイコンが常駐しているので、これをクリック。

f:id:azuuun:20150806194421j:plain

すると、Pageant Key Listのウィンドウが出るかと思うので、Add Key で先ほど生成した拡張子が .ppk である"秘密鍵"(PuTTY秘密鍵ファイル)を選択し、Addする。

これで、秘密鍵の登録は完了です。

GitHubに公開鍵を登録する

いよいよ終盤です。

GitHubにアクセスして、SettingページのSSHの設定を開いてください。

右上に [Add SSH Key]ボタンがあるので、クリックする。

f:id:azuuun:20150806195344j:plain

すると 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 an SSH key

入力したら、Add keyボタンをクリック。完了です。

うまく受け付けてくれない場合は、何回か試行錯誤してみてください。ssh-rsaの後の半角スペースは要確認です。

以上で、GitクライアントとGithub間のSSHの設定は完了です。

プッシュなどしてうまくいくか確認してみてください。

SSHって何ですか

www.adminweb.jp

読みましたか。

僕は読んでないんですが…自分ではなんとなく理解してるつもりでいて、でも実際説明しろって言われたら…。時間あったら読みたいな。