VPSサーバーにMacから接続する時、通常は長いsshコマンドを入力して接続します。
しかしこれを接続するたびに入力するのは非常に面倒ですし、管理するVPSサーバーが増えてくると全部覚えておくのは正直無理です。
ということで簡単に接続できるようにconfigファイルを作成し、簡単なコマンド入力だけで接続するように設定していきましょう。
- MacのターミナルからSSH接続を簡単に行える方法がわかる
- 設定手順の全コマンドがわかる
- 複数のVPSをincludeで管理する方法がわかる
Macのターミナルから接続は慣れないと大変
WindowsではTera TermというソフトでグラフィカルにSSH接続できますが、Macからは通常ターミナルからコマンドを使って接続します。
$ ssh ユーザー名@ホスト名 -i ~/.ssh/秘密鍵までのパス -p ポート番号
こんなコマンドですね。
ユーザー名やホスト名だけならまだしも、秘密鍵のファイル名なんかは毎度入力するのは正直面倒。
更に複数のVPSを管理するようになると、ユーザー名やポート番号がごっちゃになって無駄な時間を過ごすこと請け合いです。
configファイルを作成して設定をまとめておこう
そこで今回行うのは.sshディレクトリ直下にconfigファイルを作成して、その中に接続先のホスト名やユーザー名、秘密鍵ファイルのパス等を全て記載しておきます。
こうすることで非常に簡単なコマンドで特定のVPSに接続することができます。
更にconfigファイルには複数のVPSの情報をまとめて記述しておけるので、複数のVPSを管理することになっても情報を書くだけで簡単に管理ができるようになります。
早速設定して、一々長々しいコマンドを書いていた方式とはおさらばしましょう!
configファイル作成
まず今回の前提として、既にVPSサーバーにSSH秘密鍵接続が行える状態を想定しています。
もしまだVPSへの秘密鍵接続が出来ない、もしくはrootユーザーのままという方は上記の記事を参考に設定を行って下さい。
ホスト名(or IPアドレス) | example1.com |
ユーザー名 | testuser |
秘密鍵のパス | ~/.ssh/id_rsa |
ポート番号 | 51826 |
サーバー側の情報はこんな感じを想定しています、適宜ご自身の環境に読み替えて下さい。
configファイルの作成と記述
configファイルの作成と同時に、ファイルに中身を記載していきます。
その前に念の為、既にconfigファイルが無いか確認しましょう。
Macのターミナルを開いて以下のコマンドを実行します。
$ ls -la ~/ssh
configが無ければOK、あれば追記という形になりますが覚えてなかったconfigファイルがあるようであればそれは果たして残しておくべきものなのかどうかしっかり確認して下さい。
$ vi ~/.ssh/config
viコマンドで新しく.ssh直下にconfigというファイルを作成し、同時に編集していきます(正確に言うと保存するまではまだ作成されていません)。
configファイルに以下の情報を書き込んで行きます。
Host example1.com
HostName example1.com
Port 51826
User testuser
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
TCPKeepAlive yes
ServerAliveInterval 60
ServerAliveCountMax 10
全て「設定名 値」という形です。
Host | 実際に接続する時に使う名前(自由に決めてOK) |
HostName | VPSのホスト名やIPアドレス |
Port | SSHのポート番号 |
User | VPSのユーザー名 |
IdentityFile | 秘密鍵の絶対パス |
IdentitiesOnly | IdentityFileで指定した秘密鍵に限定するかどうか(yes/no) |
TCPKeepAlive | 接続が有効であるか確認通知を出すかどうか(yes/no) |
ServerAliveInterval | サーバーから応答が無い時タイムアウトする秒数 |
ServerAliveCountMax | サーバーから応答がない時応答を求める回数 |
それぞれの設定項目はこんな感じです。
Hostの後は接続に使うコマンドにもなるのでどんな物でもOK、極論
Host a
とかでもOKです(あんまり短いとそれはそれでヒューマンエラーの元ですし、何よりどのVPSなのか区別つかないので最低限区別がつく名前がいいと思います笑)。
設定名は大文字小文字を区別するので気をつけて入力しましょう。
入力が終わったらESCキーで編集モードを抜け、:wqと入力しエンターキーで保存完了です。
configファイルは誰彼構わず編集されたら困るので、パーミッションを変えておきます。
$ chmod 600 ~/.ssh/config
これで準備OKです。
$ ssh example1.com
接続はこれだけ、めっちゃ短くできました!
Enter passphrase for key '/Users/ユーザー名/.ssh/id_rsa':
最後に秘密鍵のパスフレーズを聞かれるので、入力してEnterで接続完了です。
複数のVPSを接続する場合
複数のVPSを管理する場合、それぞれのVPS情報を記述する事で対応が出来ます。
また、その時はワイルドカード(*)を指定できるので、同一の設定項目はワイルドカードにまとめてしまえばスマートに記述が出来ます。
# #から始まる行はコメントです
# まずはHost *と指定して、全ての接続に同じ設定をする場合ここにまとめて記述します。
Host *
IdentitiesOnly yes
TCPKeepAlive yes
ServerAliveInterval 60
ServerAliveCountMax 10
# これ以降は上でIdentitiesOnly等を宣言しているので記述不要、サーバー固有の設定を記述します
Host example1.com
HostName example1.com
Port 51826
User testuser
IdentityFile ~/.ssh/id_rsa
Host example2.com
HostName example2.com
Port 22
User testuser
IdentityFile ~/.ssh/id_rsa_example2
こんな感じでHostを追加していけばその分IdentitiesOnlyやTCPKeepAliveを書く回数が減るので行数が少なくなりメンテナンス性向上、ファイル容量低下に繋がります。
includeを使って複数VPSを管理する
接続するVPSが増えてきそうな場合、また少数でも個人的にはこちらの方がオススメです。
この方法はconfigファイルにはVPSの設定を書かずに、VPS毎に設定ファイルを用意してconfigファイルで読み込む(include)という方法です。
includeを使うメリットは、もし特定のVPS接続情報が必要なくなった場合は該当ディレクトリごと削除してしまえば~/.ssh/configを編集しなくても良いという事。
つまりメンテナンス性も良く、間違って他のVPS情報を削除してしまったり編集してしまったりするヒューマンエラーが限りなく少なくなります。
- .ssh
- config
- conf.d
- example1.com
- 秘密鍵ファイル
- config
- example2.com
- 秘密鍵ファイル
- config
- example1.com
こんな感じで.sshディレクトリ内にconf.dディレクトリを作り、その中に各ホスト毎のディレクトリを作ります。
ホストディレクトリにはそれぞれconfigファイルを作りVPSの接続情報を記述。
それを.ssh直下のconfigでincludeして使う、と言うイメージです。
.ssh/直下のconfigはそれぞれのファイルをincludeしているだけ、それもワイルドカードを使って自動で読み込むので、例えばexample2.comが不要になったらexample2.comディレクトリを削除してしまえば.ssh/configの方は特に編集する必要もありません。
/.ssh/config
include ~/.ssh/conf.d/**/config
Host *
IdentitiesOnly yes
TCPKeepAlive yes
ServerAliveInterval 60
ServerAliveCountMax 10
/.ssh/configの設定ファイルはこんな感じで、最初にincludeでconf.d配下の全ディレクトリからconfigファイルを読み込んでいます。
注意点として、includeは一番最初に行ってください。
Host以降に書くと、そのHost内限定の設定として読み込まれてしまい接続できません。
Hostにはワイルドカード(*)を指定し、全接続に対してこの設定を反映させます。
conf.d/ホスト別ディレクトリ/config
Host example1.com
HostName example1.com
Port 51826
User testuser
IdentityFile ~/.ssh/conf.d/example1.com/id_rsa
Host example2.com
HostName example2.com
Port 22
User testuser
IdentityFile ~/.ssh/conf.d/example2.com/id_rsa
個別のホスト別ディレクトリにはこんな感じでそれぞれのVPSの設定だけを記載したconfigファイルを作成します。
先述したように、不要になったらディレクトリごと削除してしまえば後のメンテナンスは一切不要です。
なおconf.d/以下のconfigファイルも適切なパーミッションを設定しましょう。
$ chmod 600 ~/.ssh/conf.d/**/config
これでOKです。
ターミナル接続を簡単にしてストレスなくVPSに接続しよう!
この作業は決して必須ではないんですが、行うことによって日々のVPS接続が非常に簡単になります。
覚えておくのは各接続先のHostの名前と秘密鍵のパスフレーズだけ、秘密鍵のパスを書かなくてもいいだけで大分ストレス軽減になります・・・笑。
正直作業自体は暇な時にやるぐらいで良いんですが、最初のうちにやっておくと後に長いsshコマンドを打つ必要がないので是非取り入れてください!
ConoHa VPS+KUSANAGIで始めるWordPress超高速環境
当記事はWordPressを超高速化できるWordPress専用仮想マシンKUSANAGIをConoHa VPSで初心者でも簡単に導入できるというコンセプトの1記事です。
手順通りに行えば誰でもKUSANAGI環境が実現できる!を目指して作成しました。
是非合わせてお読み下さい!
コメント