はじめに
PuTTY Key Generatorで作成した秘密鍵をVPSサーバーに登録して接続しようとしたら躓いたのでメモとして残します。
ConoHa VPSにGitHubのPrivateリポジトリをCloneする
を参考に進めました。
環境
- Windows11
- さくらVPSサーバー CentOS7
- Puttygen Release 0.77
事前準備
GitHubのアカウントが作成済みで、privateレポジトリが作成済。
GitHub接続用の公開鍵・秘密鍵の生成済、GitHubに公開鍵を登録済。
作業
1. VPSサーバーにGitをインストール
$ sudo yum -y install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker autoconf
→参考:CentOS7 に最新版の Git をインストールする方法
インストールされたことを確認。
# git --version
git version 1.8.3.1
2.ローカルリポジトリにユーザ名とEmailアドレスを登録
$ git config --global user.name ****
$ git config --global user.email ****@gmail.com
*は実際のものに置き換える、以下同様
3.秘密鍵を生成する
これは、WinSCPにPutty Key Generatorがあったのでそれを使って作ってみた。このファイルを、 ****_private.ppk(秘密鍵のファイル)としてローカルに保存。
4.GitHub向けの秘密鍵をVPSサーバーに登録する
VPS上のLinuxサーバに以下のコマンドで秘密鍵を登録する
$ mkdir -p ~/.ssh
$ vi ~/.ssh/[秘密鍵のファイル]
としてファイルに秘密鍵の情報を張り付ける。
余計な改行などが入らないように注意
する。
次に、秘密鍵の権限を600に。
$ sudo chmod 600 ~/.ssh/[秘密鍵のファイル]
次に、ssh_configファイルにGitHubのSSH接続情報を登録。
vi ~/.ssh/config
Host github github.com
HostName github.com
IdentityFile ~/.ssh/****_private.ppk[秘密鍵のファイル]
User git
HostName
とUser
はこれ固定にすること。
5.GitHubへのSSH接続確認
$ ssh -T github
パスフレーズを問われたら、公開鍵/秘密鍵を生成したときに設定したパスフレーズを入力してください。
「Hi [ユーザ名]! You've successfully authenticated, but GitHub does not provide shell access.」と表示されれば、GitHubへSSH接続が成功です。
もし失敗した場合は、秘密鍵の設定に問題ないか確認してください。
引用:ConoHa VPSにGitHubのPrivateリポジトリをCloneする
とのことだが、やってみるとエラーで成功しない。
# ssh -T github
Enter passphrase for key '/root/.ssh/****_private.ppk':
Permission denied (publickey).
そこで、githubとの接続のデバッグログを出してみる。
-vパラメータで詳細デバッグが出る。
$ ssh -vT git@github.com
debug1: identity file /root/.ssh/****_private.ppk type -1
(略)
debug1: Trying private key: /root/.ssh/****_private.ppk
Enter passphrase for key '/root/.ssh/****_private.ppk':
debug1: No more authentication methods to try.
Permission denied (publickey).
となり秘密鍵の指定はあっているが、やはりエラー。
・・・この辺で、以下の記事で鍵の形式が違うかもと気づいたので、秘密鍵の形式を変更してみる。
Puttyで作成したSSH鍵でGitHubにPushする
sshの秘密鍵には、ppk形式と、pem形式があり、teratermからSSH接続する際にはpem形式でなくてはならない、とのこと。
そこで、Putty上で、
【Conversions】→【Export OpenSSH key】でpem形式の秘密鍵を作成しなおし、再度テキストを
$ vi ~/.ssh/[秘密鍵のファイル]
で張り付けて中身を書き換える。
<pem形式>
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,5A72A54C7EF7F262
shlEcck8giQGEN1FNaAy+UQbLegYCuEWeFOEZraBn6Gg9S09xsD9hm32K0OeMs4y
Oli0b1D7HP5AiQBJf910mBRulYL50e3OSuLtZjEjsl7aRE42+5lvKRHqMmNbgEIS
・・・・
v4k54aOs9n9zIFCIdmIYsvl7Rx0fhb9QJGEQaP9jmijtHVXkkpI8ndVoEl9DL7FI
hFGlGZMzTqLAuCTKCoWJ+VxWvW/fa8eJRxzcfLQd/1WXUt/VG9nruHqF+9nw+Pcg
-----END RSA PRIVATE KEY-----
再度接続確認。
ssh -T github
すると秘密鍵がbad permissionsと怒られたので、
# ssh -T github
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/****_private.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/****_private.ppk": bad permissions
Permission denied (publickey).
# sudo chmod 600 ~/.ssh/****_private.ppk
でパーミッションを変更。
再度接続トライ。パスワードを入力すると、無事、
「Hi ****! You've successfully authenticated」
が出て接続に成功した。
# ssh -T github
Enter passphrase for key '/root/.ssh/****_private.ppk':
Hi ****! You've successfully authenticated, but GitHub does not provide shell access.