TOAST Instance どうしてSSH接続できないの?

はじめに

この記事は超初心者向けです!

今回の記事は、クラウドサービスをはじめて利用するときにつまづくかもしれない、はじめの一歩、「Linuxサーバーを起動してSSH接続したいのにできない」という方へ向けた記事です。

「TOASTを使ってみようとしたけど、ユーザーパスワードがメールで送られて来ない。どうやって接続したらいんだろう」というような部分をお話したいと思います。

TOAST Meetupの読者の方の多くは、他の著名なクラウドサービスを渡り歩いている方、大規模サイト運営の実際や開発言語のエラーを検索してこのサイトに来られた方などかと思います。そして、特にこちらで説明をしなくてもインスタンスが起動し、すいすい開発を進めていらっしゃる方も多くいらっしゃいます。そういう方はこの記事は読まないほうが時間の節約になります。

インスタンスが起動しているのに接続ができない理由

1)FloatingIP(グローバルIP)が付与されていない

Floating IPとは…
・グローバルIPアドレスで、インスタンス料金とは別に課金されます。
・インスタンス起動時に付与して起動することもできますし、あらかじめ購入しておき、インスタンス起動後に接続させるようにすることもできます。
・Floating IPは、お客様ご自身でインスタンスに接続したり、接続解除したり、別のインスタンスに付け直したりということができる「浮動」のIPアドレスです。(「TOAST Instance 1台に複数のグローバルIPを割り当てる」参照)

プライベートIPアドレスとは…
TOASTでインスタンス作成時に必ず1つは付与される192.168.**.**などのアドレスは、プライベートIPアドレスです。
TOASTではデフォルトで「192.168.**.**」がプライベート用に準備されていますが、「外部からアクセスができないIPアドレス」として、192.168.**.** 以外にも172.16.**.**から172.31.**.**、10.**.**.** などもプライベートネットワークであると、インターネット上のルールで定められています。
もしSSHの接続先のIPアドレスとして「192.168.**.**」というようなIPアドレスを指定されていたとしたら、それはグローバルネットワークにつながっていないIPアドレスですので、インターネット経由ではアクセスができません。

インスタンス起動後にFloating IPを付与する手順
インスタンス作成と同時にFloating IPを付与することもできますが、インスタンス作成後にFloating IPを付与する場合は以下の手順となります。
1.Compute > Instance > Floating IPメニューを開く
Floating IP一覧が表示されます。1つでも「接続」というボタンが見えていれば、まだインスタンスに接続していないFloating IPがありますので追加の必要はありません。
2.あまっているFloating IPがない場合、「Floating IPの作成」クリックし、Floating IPの追加を行います。

3.Floating IPが準備できたら「接続」ボタンを押します。

4.「Floating IPの接続/解除」欄にはまだFloating IPと接続していないインターフェイスが表示されますので対象の
インスタンスをプルダウンで選択し、「接続」をクリックします。

ちなみに、Floating IPは不要になったらインスタンスから接続解除し、削除することができます。
Floating IPは削除(返却)しない限り、課金が発生します。インスタンスだけ削除しIPを返却し忘れる方もいらっしゃるため、ご注意ください。

2)セキュリティグループで利用ポートの外部接続を許可設定がない

デフォルトのセキュリティグループの設定のままですと外部からのアクセスについての許可設定が書かれていません。
つまりSSHも、将来セットアップして起動しようとしているサービスポートもすべて遮断されている状態です。
ご自身の利用するサービス用に、セキュリティグループを作成する例を紹介します。

セキュリティグループの作成手順

1.Compute>Instanceの「セキュリティグループ」タブ内の「セキュリティグループの作成」をクリックします。
2.グループ作成画面
2ー1.名前欄にはアルファベットで任意の文字列を入れます。
2-2.既定で記載された以下の”送信”に関する内容は消さないで残しておいてください。

方向 IPプロトコル ポート範囲 Etherタイプ リモート
送信 他のプロトコル:0(任意) IPV4 CIDR 0.0.0.0/0
送信 他のプロトコル:0(任意) IPV6 CIDR ::/0


2-3.「+」ボタンを押して必要な、受信ルールを追加します。
設定内容はご自身の設定したい内容によって違ってきますが、通常はSSHポート、インスタンス内でサービスするポートなどの受信許可設定を加えます。
例1)SSHを任意のアクセス元からアクセス許可する場合、以下を追加します。

方向 IPプロトコル ポート範囲 Etherタイプ リモート
受信 SSH (22 が自動選択されます) IPV4 CIDR 0.0.0.0/0

例2)6000番でサービスを起動する予定で、自分自身のアクセス元 IPアドレスが△△.△△.△△.△△であり、
以下のような設定をすれば「ご自身のIPアドレスからだけサービスに接続可能」にしたい場合は
「+」で以下のような設定を追加します。

方向 IPプロトコル ポート範囲 Etherタイプ リモート
受信 ユーザー定義 TCP 6000 IPV4 CIDR △△.△△.△△.△△/32

個人的に利用するツールや私用で起動したプロキシサーバーなどを一般に開放することはセキュリティ上はあまり推奨できません。
ただどうしてももし任意のアクセス元からアクセスを許可しなければならない場合は
リモートは CIDR 0.0.0.0/0 で設定することが設定できます。

作成したセキュリティグループのルールをインスタンスに割り当てるようにしてください。

作成済みインスタンスのセキュリティーグループの設定を切り替える手順
1.Compute>Instanceから対象のインスタンスを選択し、「セキュリティーグループの修正」ボタンをクリック
2.セキュリティーグループを選択できる画面になりますので
用意したセキュリティグループを1つのみ選択し、(他はチェックを外し)確認をクリック
セキュリティグループを複数選択すると混乱することがあります。
問題を切り分ける際にも、想定したセキュリティグループを1つのみ選択することをおすすめいたします。

3)インスタンス内で対象サービスが立ち上がっていない

OSはCentOSなど、Linux系のサービスを選択していただければSSHサービスは起動する設定になっています。インスタンス作成が終わり、稼働していれば基本は問題ない状態になっています。

Windowsでインスタンスを立ち上げた場合はRemote Desktopでのアクセスが通例です。SSHでアクセスしようと頑張っていたけど、接続先のインスタンスが実はWindows OSでそもそもSSHが起動していなかったということのないようにご注意ください!

4)ログインアカウントと秘密鍵に誤りがある!

アカウント
LinuxインスタンスへのSSHのログインアカウントは「root」ではありません。
CentOSの場合は「centos」
Ubuntuの場合は「ubuntu」
Debianの場合は「debian」
という一般ユーザーアカウントでのログインとなります。
ログイン後「sudo su」コマンドを発行していただきrootに昇格します。
rootでのSSHログインは既定の状態ではできないようになっており、rootでのSSHログインはセキュリティ上推奨しません。
パスフレーズ不要、秘密鍵必須
パスフレーズは不要です。インスタンス作成時にキーペアを指定いただきますが、秘密鍵ファイルが必要です。
ポート、その他
ポートは一般的な22番ポート、IPv4でアクセス先サーバのFloating IPを指定します。

SSH接続ガイドにはPuttyでのPCからの接続方法が書かれています。以下の画像はTeratermでの例です。


おわりに

日本のサポートスタッフである私たち自身も、昔からよくある「レンタルサーバー」、もしくは一般的なVPS(Virtual Private Server 仮想専用サーバー)や、そして物理サーバーの運用のサポートをしてきた経験のほうが長いのです。聞きなれない用語や従量課金の仕様に戸惑う部分もありました。

ただ初めの一歩を乗り越えてしまえば、これまでのサーバーと大きく変わらないし、共通する部分もたくさんあります。そして以前利用していたタイプのサーバーよりもっと便利に活用できる部分もあると思っています。

TOAST Meetup 編集部

TOASTの技術ナレッジやお得なイベント情報を発信していきます
pagetop