とあるプログラマの備忘録

都内某所に住むプログラマが自分用に備忘録を残すという趣旨のブログです。はてなダイアリーから移動しました!

Macから踏み台サーバを2つ介してMysql接続する方法 其の一 ~sshのRSA認証接続編~

※最終目標
ローカル環境から踏み台サーバを2つ介して最終的にMacGUIからDB接続するというもの。

ローカル       :自分のMac
踏Aサーバー    :一個目の踏み台サーバー(自社のサーバーの事)
踏Bサーバー    :二個目の踏み台サーバー(他社のサーバーの事)
DBサーバー     :最終的に繋がる予定のMysqlサーバー

ローカル > 踏Aサーバー > 踏Bサーバー > DB と多段ポートフォワーティングしてMacGUIから接続したいのです。
今回の前提条件として、接続の許可は上記の順番のサーバーのみ接続許可されています。
ローカル > 踏Bサーバーや
踏Aサーバー > DBサーバーなどの接続はできません。

プロジェクトとかだとあるんです。こんな面倒な環境が。。



1章 ローカル > 踏AへのRSA認証接続をする
ローカル > 踏A は今までパスワードを入れていたのですが、
この接続をするにあたって毎回パスワードを入れていたら非常に面倒なので
これを機にまずRSA認証でパスワードを入力しないでも接続できるようにします

・ローカルでssh-Keygenをして公開鍵を作成する
正直ここからへんの記事は沢山の人がかいているので改めて書く必要も無いかもしれませんが
一応順を追っていきます。


・~/.ssh ディレクトリを作成しましょう。
※無い場合は

$ mkdir ~/.ssh

移動してssh-keygenします

$ cd ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/raharu0425/.ssh/id_rsa): [特に指定が無ければそのままエンター]
Enter passphrase (empty for no passphrase): [パスフレーズがいらなければそのままエンター]
Enter same passphrase again: [パスフレーズがいらなければそのままエンター]
Your identification has been saved in /Users/raharu0425/.ssh/id_rsa.
Your public key has been saved in /Users/raharu0425/.ssh/id_rsa.pub.
The key fingerprint is:
4a:5c:fb:a3:83:67:34:b7:50:3b:5e:f8:d8:29:f7:a4 raharu0425@mac-raharu-3.local
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|        .        |
|     . . ..      |
|      o S. o     |
|     . .+.= .    |
|      .o =oB ..  |
|      . +.=.=o   |
|       o.. oE..  |
+-----------------+

id_rsaとid_rsa.pubが出来上がれば大丈夫です。

$ ls -l
total 16
-rw-------  1 raharu0425  staff  1679 12 19 20:25 id_rsa
-rw-r--r--  1 raharu0425  staff   416 12 19 20:25 id_rsa.pub

このローカルで作ったid_rsa.pubを踏Aの~/.ssh/authorized_keysにコピーします。
~/.ssh/authorized_keysが無ければ作りましょう。

踏Aサーバーにて

$ ll ~/.ssh/authorized_keys
無いようならば作りましょう。
$ mkdir ~/.ssh
$ vi ~/.ssh/authorized_keys

この中にid_rsa.pubをコピーすればおkです。
これで接続の準備が整いました。


・一旦接続テストをしてみましょう
ローカルに戻って

$ ssh -i .ssh/id_rsa [ユーザー名]@踏Aサーバーのホスト又はIP

初期接続にはSSL認証してないけどいい?って聞かれるので
yesと答えましょう。
これで踏Aに接続できれば問題ないです。


・~/.ssh/configを作る
踏Aだけに接続できればこれで良いのですが、この後の多段接続が必要なので
~/.ssh/configを作成します。
ローカルにて

$ vi ~/.ssh/config

以下を追加

 #踏A
 Host humiA
   Hostname            humidaiA.co.jp
   IdentityFile        ~/.ssh/id_rsa
   User                raharu0425_humiA
humiA:適当な名前で大丈夫です。
Hostname:踏Aのホスト名又はIPアドレスと入れましょう
IdentityFile:先ほど作ったid_rsaのパスを指定します
User:踏Aに入るユーザー名を入れましょう

これで繋がるようになる筈です。

$ ssh humiA

どうでしょうか?
先ほどまで
ssh -i .ssh/id_rsa [ユーザー名]@踏Aサーバーのホスト又はIP
というコマンドが必要でしたが、ssh humiAだけで接続できるようになりました。

これで第一段階終わりです。

次回は多段SSH接続編です。
ローカル > 踏B の接続を踏Aを通して行います。


関連記事