SourceTreeとGitHubのSSH接続エラーが出たときの解消方法

プログラミング

今回のSSH設定経緯

  • SourceTreeからGithubのアカウントを追加
  • ローカルに既存sshファイルが無かったため、SourceTreeからSSHファイルを自動作成。
  • GitHubに作成したSSHキーを設定。
  • SourceTreeからGitHubにSSH接続したら、以下のようなエラーが表示。
git@github.com: Permission denied (publickey).

公開鍵の権限拒否というエラーメッセージが含まれています。

エラーの原因

今回私が認識した主な原因は2つです。

1、macOS Sierra 10.12.2以降を使用している場合は、SSHキーをssh-agentに追加する必要がある。
2、設定の手順が間違っていた。

SSHエラーを解消する(GitHub公式ドキュメントを参考)

GitHubの公式ドキュメントにSSHの設定手順が記載されています。

GitHub公式ドキュメント
Generating a new SSH key and adding it to the ssh-agent
新しいSSHキーを生成し、それをssh-agentに追加します

重要:必ずドキュメントにある順番で設定を行ってください。
すでにSSHファイルを作っていたり、GitHubにSSH keysを設定している場合は、一度両方とも削除して、1〜4の順番で設定を進めてみてください。

GitHunのSSH接続エラー解消ステップ
  1. バックグラウンドでssh-agentを起動する。
  2. SSHファイルをSourceTreeのGitHubアカウントから作成する。
  3. SSH秘密鍵をssh-agentに追加し、パスフレーズをキーチェーンに保存する。
  4. 作成したSSHキーをGitHubに設定する。

バックグラウンドでssh-agentを起動する。

ターミナルからコマンドを打ちます。

// 以下のコマンドをうちます
eval "$(ssh-agent -s)"

// 以下のような表示がでればOKです。
gent pid 59566

SSHファイルをSourceTreeのGitHubアカウントから作成する

ローカルにSSHファイルが作られていない状態

(今回のケースは)ローカルのsshディレクトリ(通常はユーザディレクトリ直下、例:/Users/ユーザー名/.ssh)にはsshファイルがない状態です。

sshファイルが作られている場合、一般的には「id_rsa_hoge(秘密鍵)」「d_rsa_hoge.pub(公開鍵)」という名前のファイルがあると思います。

SSHファイルをSourceTreeのGitHubアカウントから作成

SourceTreeアプリを立ち上げて、環境設定を開きます。

「アカウント」タブからGitHubのアカウントをクリックして設定画面を開きます。

プロトコルがSSHであることを確認します。
sshファイル未作成の場合は「キーがありません」という表示と「キーを作成」というボタンがあるのでクリックして、sshキーを作成します。

パスフレーズは入力しなくてもSSHキーを作成することができます。
必要に応じて入力をし「作成」をクリック。

SSHキーに、公開鍵のファイル名が表示されています。
ファイル名は「GitHubのアカウント名」+「-Github.pub」になるようです。

sshディレクトリないのconigファイルの中に、以下のような記述が追加されています。

# --- Sourcetree Generated ---
Host mmapple-GitHub
	HostName github.com // 必ず「githib.com」
	User git  // 必ず「git」
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/mmapple-GitHub
	UseKeychain yes
	AddKeysToAgent yes
# ----------------------------
注意事項

SourceTreeが自動で書き出す設定内容ではHostとUserの値がGitHubのユーザー名になってしまい、接続エラーになります。
HostとUserは必ず「git」にする必要があるため、手動でconfigファイルの内容を必ず書き直してください。

SSH秘密鍵をssh-agentに追加し、パスフレーズをキーチェーンに保存する

以下のコマンドを打ち、パスフレーズをキーチェーンに保存します。

ssh-add -K ~/.ssh/mmapple-GitHub(sshファイル名)

ユーティリティー内の「キーチェーンアクセス」でgitで検索すると、GitHubのキーチェーンが登録されています。

GitHubのアカウントにSSHキーを追加

GitHubのアカウントに行き、メニューから「Setting」を選択します。

設定画面のメニューから「SSH&GPG keys」をクリックします。

SSH keysの「New SSH key」をクリック

SourceTreeのGitHubアカウントに戻り、SSHキーの「クリップボードにコピー」をクリックします。

GitHubの画面に戻り、SourceTreeで作成したSSH keyを登録します。
適宜タイトルを入力し、keyエリアにコピーしたキーを貼り付けます。

GitHubにSourceTreeのSSH keyが追加されました。

ここまでの設定を行ったところ、SSHエラーが解消され、SourceTreeからGitHubにSSH接続することができました。

タイトルとURLをコピーしました