クライアント側からSSHにおける秘密鍵や公開鍵が必要なSFTP・Git情報が提供された時の流れ(備忘録)

今回は、クライアント側から秘密鍵や公開鍵が必要なSFTP情報・Git情報を提供された時に確認することと流れについて綴っていきます。

使用PCはM1チップ搭載のMacBook Airになります。

いろんな記事で対応方法は載っていたけど全然上手くいかなかったので、この記事で悩んでいる方の指針になれば嬉しいです。

今回は接続の仕組み部分の解説は、長くなってしまうため省きますのでご了承ください。

SFTP設定の流れ

FileZillaのインストール

今回はFileZillaを使います。下記からインストールします。

https://filezilla-project.org/download.php?type=client

SFTPの設定

クライアント側からは下記の情報が提供されます。testや番号はダミーと考えてください。

ホスト: test.test.jp
ポート: 1234
ユーザー: test
パスワード: 秘密鍵の場合はありません

これにプラスして、クライアント側で用意した公開鍵と秘密鍵、秘密鍵のパスフレーズが提供されます。testの箇所は同じ文字列になっているはずです。

// 秘密鍵
test_rsa

// 秘密鍵のパスフレーズ
test

// 公開鍵
test_rsa.pub

自分の場合はtest_rsaのファイルだとFileZillaの設定時にうまくいきませんでしたので、test_rsa.ppk形式のファイルをいただきました。

// 秘密鍵
test_rsa.ppk
ppk形式に変換できる方法も色々紹介されていたのですが、自分にはうまくいきませんでした。

またFileZilla使用時にもtest_rasaをppkに変換してくれるメッセージが表示されるのですが、実際に繋がりませんでした。

ここまで準備ができたらFileZillaに接続していきます。

### FileZillaの設定
FileZillaを開き、左上をクリックします。

下部にある「新しいサイト」をクリックします。

ホスト: test.test.jp
ポート: 1234
ユーザー: test
パスワード: 秘密鍵の場合はありません

// 秘密鍵のパスフレーズ
test

上記の情報を下記画像の右側に入力します。
プロトコルはプルダウンから「SFTP – SSH File Transfer Protocol」を選びます。
ログオンタイプは「鍵ファイル」を選びます。
緑枠については、参照から秘密鍵を保存しているフォルダに進み「test_rsa.ppk」(test_rsaは仮ですので、実際に提供されたファイル名になります)を選択します。

設定できたらOKをクリックすると、秘密鍵のパスワードの入力が求められると思いますので「test」(提供された秘密鍵のパスフレーズを入力)と入力します。

これでエントリの選択の一覧に「test」が作成されますのでダブルクリックすると、接続ができるかと思います。

Git設定の流れ

公開鍵と秘密鍵の準備

今度は自分で公開鍵と秘密鍵を準備しなくてはいけません。先ほどのクライアント側から提供された公開鍵と秘密鍵とは別になりますのでご注意ください。

Finderで「ターミナル」と検索をかけ、「ターミナル.app」を開きます。

$のあとに下記「mkdir ~/.ssh」をコピペしてreturnキーを押します。これでFinderの「自分の名前」(この名前はその人のPCによって変わります)のフォルダの中に「.ssh」フォルダが作成されます。
そんなのないよと思った方もいるかもしれません。こちらは隠しファイルとなっていますので、通常だと見れないファイルになります。これを見るためにはFinderを開いている時に「command + shift + .」を押します。
これで見えるようになります。

mkdir ~/.ssh

ターミナルに戻り、$のあとに下記「chmod 700 ~/.ssh/」をコピペしてreturnキーを押します。
これで「.ssh」フォルダは、自分だけに書き込み、読み込み、実行の権限が与えられます。自分以外のユーザーには権限が与えられません。

chmod 700 ~/.ssh/

ここでいよいよ「.ssh」フォルダの中に秘密鍵と公開鍵を作成していきます。
ターミナルに戻り、$のあとに下記「ssh-add –apple-use-keychain ~/.ssh/git_rsa」(ちなみにgit_rsaのgitは任意の文字列でOKです)をコピペしてreturnキーを押します。

ssh-add --apple-use-keychain ~/.ssh/git_rsa

すると次の文字列が出てきますが、未入力でreturnキーを押します。

Enter passphrase (empty for no passphrase)

続いて下記も同様に未入力でreturnキーを押します。

Enter same passphrase again:

これでFinderの「.ssh」フォルダを見てみましょう。下記のように秘密鍵「git_rsa」、公開鍵「git_rsa.pub」が作成されているはずです。

ターミナルに戻り、下記「chmod 600 ~/.ssh/git_rsa」をコピペしてreturnキーを押します。
これにより秘密鍵を自分にのみ読み書きができるようになります。

chmod 600 ~/.ssh/git_rsa

ここまで設定しましたら、次はGitHubのアカウント作成に移ります。

GitHubのアカウント作成と設定

下記にアクセスして、登録してください。

GitHub Japan | GitHub

右上の自分のアイコンをクリックすると下記のようにメニューが出てきます。「Settings」をクリックします。

左側のメニューにある、SSH and GPG keysをクリックします。

「New SSH key」をクリックします。

Titleに作成した公開鍵の名前「git_rsa.pub」を入力します。
Key Typeはそのままの状態で大丈夫です。

Keyを入力するため、ターミナルに戻り、「pbcopy < ~/.ssh/git_rsa.pub」をコピペしてreturnキーを押します。これで公開鍵の内容がコピーされます。

pbcopy < ~/.ssh/git_rsa.pub

この状態でGitHubに戻り下記の「Key」の中に貼り付けましょう。あとは「Add SSH Key」を押せば設定完了です。
※ターミナルはまだ使いますので、開いたままにしておいてください。

公開鍵をクライアント側に送る

クライアント側で用意しているGitが使えるように、こちら側で設定した公開鍵「git_rsa.pub」のデータを送る必要があります。
※秘密鍵「git_rsa」は送らないよう注意してください。

「.ssh」フォルダにある「git_rsa.pub」をコピーして、デスクトップなどに貼り付けそのデータを送るといいと思います。

これでクライアント側で設定が終わると、下記のようにGitに係る情報がクライアント側から提供されます。

Host: staging.git
Hostname: test.test.jp
Port: 1234
User: test
リポジトリ名:hogehoge.git

ここでターミナルに戻り、「.ssh」フォルダの中に上記設定をするため「config」ファイルを作成します。
下記「vi ~/.ssh/config」をコピーしてreturnキーを押します。

vi ~/.ssh/config

続いて、「.ssh」フォルダの中の「config」ファイルをダブルクリックし、下記をまるごとコピーして貼り付けます。
ここでHostなどの提供いただいた情報を書き換えていきます。
変更するのは、Host、Hostname、Port、User、IdentityFileになります。
IdentityFileは本ブログの手順で作成した場合は、特に変更しなくても大丈夫です。その他の情報は提供された情報の内容に書き換えてください。

変更後は「command+S」で保存しconfigファイルを閉じます。

Host staging.git
 Hostname test.test.jp
 Port 1234
 User test
 PubkeyAuthentication yes
 IdentityFile ~/.ssh/git_rsa
 AdakeysToAgent yes
 Usekeychain yes

いよいよ接続テストです。ターミナルに戻り、下記「ssh staging.git」をコピペし、returnキーを押します。staging.gitはHost名になりますので、提供された名前に書き換えてください。

ssh staging.git

すると下記のようなメッセージが表示されるはずです。これで使えるようになります。一旦ターミナルを閉じます。

Hi 自分の名前! You've successfully authenticated, but GitHub does not provide shell access.Connection to github.com closed.

Gitからクローンしてファイルを取り出す

自分の作業したい場所にフォルダを用意します。今回はデスクトップ上に「test」フォルダを作ることにします。

「test」フォルダを作成したら開いて、下記の場所からターミナルを開きます。これによりこの「test」フォルダの場所でターミナルを開くことができるようになります。

あとは下記「git clone ssh://staging.git/hogehoge.git」をコピペしてreturnキーを押すと、「test」フォルダの中にファイルが作成されます。
staging.gitはHost名、hogehoge.gitはリポジトリ名に対応しています。

git clone ssh://staging.git/hogehoge.git

これで完了となります。

最初の設定でこれだけのボリュームがあり、複雑でなかなか上手くいかず大変でしたが、なんとか上手くいってよかったです。上手くいかない方の参考になりますと幸いです。