LoginSignup
0
0

More than 1 year has passed since last update.

Puttyで作成したGitHub向けの秘密鍵でVPSサーバーに接続

Last updated at Posted at 2023-04-16

はじめに

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

HostNameUserはこれ固定にすること。

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.

参考

0
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
0
0