LoginSignup
1
0

ssh接続できるけどgithubにpushできない

Last updated at Posted at 2024-07-10

sshコマンドで接続は可能

「.ssh/config」にgithubへの接続設定を記載し、githubに公開鍵を登録しました。

.ssh/config
Host github
    HostName github.com 
    identityFile ~/.ssh/<Keyファイル名>
    IdentitiesOnly yes 
    TCPKeepAlive yes
    AddKeysToAgent yes 
    User git 

テストコマンドで接続も確認。

ssh -T github
Hi <ユーザー名>! You've successfully authenticated, but GitHub does not provide shell access.

実は、「.ssh/config」にあるミスがあります。
ssh単体のテスト接続は確認できるので、ここで問題には気づけませんでした。

もう、気付いた人もいると思います。実は、最初に「.ssh/config」を作成したとき、このミスをしていませんでした。いろいろと調査しているときに変更して、その修正を忘れていました。

gitへのpushができない

上記の状態で、gitへpushします。
すると、許可されていないというエラーメッセージが表示されて、pushできません。

git push origin staging:staging
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights

いつもならpushできるのにおかしいなと思いました。
今回はorganizationのリポジトリへpushしようとしてたので、権限かなあと思ってそのあたりも見直しました。でも、それも問題なさそうでした。

とにかく、gitのリモートリポジトリを確認しようと思いました。

git remote -v
origin  git@github.com:<組織名>/<リポジトリ名>.git (fetch)
origin  git@github.com:<組織名>/<リポジトリ名>.git (push)

想定どおりのリモート先。
ただ、これをみてるときに、sshのホスト指定とgitのホスト指定をリンクさせるのはドメイン名だから、そこに違いがあるんだろうなと思いました。

.ssh/configのHost名と.git/configのリモートドメインの不一致

冒頭の「.ssh/config」の設定で気付いた人がいると思います。問題の原因は、Host名に「.com」が抜けていることでした。「.ssh/config」のHost名とリモート先のドメイン名が一致していなかったので、gitのコマンドがssh接続の設定情報を取得できず、エラーになっていました。

.ssh/config
Host github ← ここに「.com」がない
    ...

上記を以下のように修正しました。

.ssh/config
Host github.com ← 「.com」を追加
    ...

再度、gitでpushコマンドを実行します。

git push origin staging:staging
Everything up-to-date

今度はエラーなくpushができました。

問題調査の為の変更が問題を引き起こす

今回、新しい構成でやってみていて、いろいろと問題が起こりました。設定を変更しながら原因追及していました。その際に、「.ssh/config」のHost名を変更しました。「.ssh/config」のHost名は単なる設定名称なのでドメイン名でなくても接続情報を取得できるのを確認していました。確かに、sshの接続だけなら想定通り接続できました。

この変更を修正せずに、別の仕事をし、変更したことをすっかり忘れていました。
そして、いざgit pushすると接続できず、かなりハマりました。

こうした個人のうっかりミスに関するエラーはなかなかネットにないことがあります。これは、自力でなんとかしないといけません。まさに、探偵になったつもりで原因調査しました。

気づいたら大したことない原因で、自分がまいた問題なんですが、解決するとめっちゃうれしかったりします。
個人的な低レベルなミステリーでした。

もし、同じような原因の人の助けになれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0