この記事で書くこと
長いこと使用されてなかったサーバー上で開発を再開発しようと思った時に、
gitに接続が出来なくなった時にどうやって解決したかの備忘録。
この記事で書かないこと
公開鍵と秘密鍵の発行方法、権限周りの詳細、仕組み
結論
サーバーのsshのバージョンが古過ぎて、 openssl形式の鍵に対応していなかった。
PEM形式の鍵を発行して使用したところ、期待する動きを確認できた。
困って困ってたどり着いた参考にさせていただいたサイトはこちら
【OpenSSH 7.8】秘密鍵を生成する形式が変更になった件について
ありがとうございます。本当に困っていました。この場でお礼をお伝えさせていただければと思っています。
状況
- 長い事動いてなかったサーバーで、使用されている公開鍵と秘密鍵は、もう弊社の退職者のアカウントのまま。
- そのサーバーで追加開発した内容を動かす必要があった。
試した事
他のサーバーで使用している公開鍵と、秘密鍵を件のサーバに移動して、そのまま使えるか試してみる。
ssh -T git@github.com
をしても
Enter passphrase: え、わからないんですけど。。。。。設定してたの??
Permission denied(publickey)
と返される。
同じ公開鍵と、秘密鍵を使っているサーバーで、
ssh -T git@github.com
をしても
Hi アカウント名! You've successfully authenticated,
パスフレーズを聞かれる事なく、接続が完了する。。 なんで。。
パスフレーズを設定した新しい鍵を作成して、サーバーにアップロードして、使用する。
ssh -T git@github.com
をしても
Enter passphrase: 正しいパスワードをいれる。
Enter passphrase: 正しいパスワードをいれる。
Enter passphrase: 正しいパスワードをいれる。
Permission denied(publickey)
どうして
正しいパスワードを入れてるのに、弾かれる。。。
パスフレーズを設定しない新しい鍵を作成して、サーバーにアップロードして、使用する。
ssh -T git@github.com
をしても
Enter passphrase: 正しいパスワードをいれる。
Permission denied(publickey)
設定してないのに、どうして!!!!
参考にさせていただいたサイトに出会う。
自分の使用していた鍵を確認してみると、
-----BEGIN OPENSSH PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END OPENSSH PRIVATE KEY-----
となっている。
件のサーバー上で
ssh -V
でバージョンを確認すると、やはり対応してないバージョンでした。
対する、ローカル(自分のpcの環境)のsshのバージョンは、 OpenSSH 7.8
より上でした。
なので、形式を特に指定せずに発行すると、
ssh-keygen -t rsa -C "発行した鍵が紐づいた使用するgitアカウントで使っているメールアドレス"
-----BEGIN OPENSSH PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END OPENSSH PRIVATE KEY-----
になっていたと。
という事なので、
ssh-keygen -t rsa -C "発行した鍵が紐づいた使用するgitアカウントで使っているメールアドレス" -m PEM
でPEN形式での発行をしてみると、
-----BEGIN RSA PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----
PEM形式の鍵が発行された。
ということで作成した鍵をパスフレーズ付きで作成して、サーバーにアップロードして、使用する。
ssh -T git@github.com
をすると
Enter passphrase: 正しいパスワードをいれる。
ドキドキしながら、やってみる。
Hi アカウント名! You've successfully authenticated
で、できたーーーー!!!
エラーメッセージでお使いのsshが依存してるopensslが形式が対応してないため、鍵の認証に失敗しました、などと教えていただけるとこんな自分でも気付きやすくていいのかなと思うのですが、今回自分が出会ったメッセージだと、なかなかすぐに原因にたどり着けませんでした。
最後に
同じようにつまづいてしまった方の何かの参考になればと思います。
間違ってる箇所などございましたら、コメントいただけますと幸いです。
ここまで読んでくださりありがとうございました。