AWS SSH接続方法。

SSHは煩わしい?

telnetという用語を聞いたことありますか?エンジニアやIT関連のお仕事をされている方なら当たり前の知識です。telnetを業務で利用する場合、

「telnetしてホスト〇〇のルーティング見て下さい」、「telnetして〇時頃のログ確認して下さい」などの確認業務があります。

「SSHでホスト〇〇のインターフェース情報見てください」ということももちろんあるわけです。

最初は面倒だと思われるかもしれません。その理由は、SSHでの確認では特定のパスワードが必要だったり、更にリモート先でSSH接続しなければtelnetでの確認ができず、業務といえど会社のデフォルト内で確認が不可であり、通常より時間を使うためです(自身で使う際は最初の設定を実施すれば特に面倒な操作は必要ありません)。機器の詳細が確認できるまでに通過点が多いと思われますが、このSSHはとても重要なお仕事をしているのです。

なぜSSHを使うのか?

VPSなどの各種サーバ機器は、ほとんどの場合操作する人の手から離れた場所にあります。そのため、操作する人だけが安全にインターネット経由で接続できる手段が必要になります。なぜなら、万が一悪意を持った人がサーバにログインできてしまうと、サーバ内ではやりたい放題となりさまざまなリスクの原因となるからです。第三者から金銭的な被害を受けるなどの犯罪につながりかねません。そこでSSHを利用して本来の管理目的で対象サーバへ安全に接続し、そこで操作する手段が大変有効なのです。

SSHは難しい・・・?

最初の設定をすれば後はSSHを介しての接続になるので難しいというほどでもありません。SSHの設定により、その都度接続を確認する選択も可能です。比較的簡単な方法で安全性を高める効果があり、リスクを回避し安全に操作できるというメリットの方が大きいため、利用価値はとても高いです。

SSH認証の仕組みとは?

離れた場所にあるサーバを安全に操作するため、SSHは複雑にできています。そのため、サーバへのログインが適正かどうかチェックする方法は複数用意されており、代表的なものは「パスワード認証方式」と「公開鍵認証方式」です。SSHの設定方式により選択可能で、おおまかな違いは以下のようになっています。

【パスワード認証方式】

この場合のパスワードとはサーバのユーザアカウントに設定しているものを指し、方式としては手軽ですが危険度は高めです。なぜなら、パスワードが第三者へ流出すると、ログインが可能になってしまうからです。しかしパスワード認証方式ではパスワードのみを簡単に確認しているわけではなく、例えばいくつかのプロセスの後にSSHサーバとSSHクライアントの内容が暗号化されるといった、実は公開鍵認証方式と共通の複雑な動きをしています。

【公開鍵認証方式】

初期設定作業が大変ですが、通信の安全性はとても高い方式です。方法はいくつかありますが、「鍵」と呼ばれるファイルをしっかり保管さえすれば、「鍵」のないユーザからのログインは原則できない仕組みになってます。逆に言えば「鍵」を無くせば自分でもログインできなくなります。これにより第三者からの不正なログインを回避することができます。

 

「公開鍵認証方式」にてSSH設定をしてみます

今回はAWSにてEC2インスタンスを使用してSSH設定をします。SSH接続は色々なクライアントソフトが存在しますが、今回はWindows環境でよく使われているPuTTYというSSHクライアントソフトを利用します。必要なものは、

・SSHクライアントソフト(今回はPuTTY)

・AWSのパブリックDNS

・AWSインスタンス作成時のpemファイル(PuTTYで使用時は変換が必要)

です。順番に実施していきます。

※インスタンス作成をした際にダウンロードしたpemファイルを使用しますが、PuTTYではそのままの使用ができません。PuTTYをインストールした際に一緒に「PuTTYgen」というソフトも一緒にインストールしますので、それを使用しpemファイルをPuTTYで使用できるように変換します。PuTTYgenを起動し、ConversionsタブのImport keyをクリックして、対象のpemファイルを選択します。その後Save private keyボタンをクリックすると、「ppk」というファイルに変換されるので、適当な場所に任意のファイル名で保存しておきます。元のpemファイルと同じファイル名がわかりやすいです。

1、まずPuTTYのサイトにてパッケージファイルのインストールを行います。「PuTTY」とGoogle等で検索すると、一番上に「Download PuTTY」とサイトが表示されるので、そこからインストールが行えます(注:32bitや64bitで選択がわかれるので、PCのスペックに合わせてダウンロードします)。ダウンロードが終わったらPuTTYのセットアップです。checkやフォルダ選択などは特に変更せず「next」で進めてインストールします。完了したらPuTTYを起動します。

 

2、AWSのパブリックDNSが必要なので、AWSインスタンス接続画面にあるパブリックDNSをコピーし、PuTTYの「Host Name(or IP address)」欄に貼り付けます。

 

3、次に左のツリーに「SSH」というグループがあるので、その中の「Auth」を選択し、下部のPrivate key file欄にpemファイルを変換したppkファイルを選択します。ここでPuTTYの警告がでますが、今後の接続詳細を聞いています。今後の使用時も継続してこのままSSHでの接続で良ければ「はい」、今回だけの場合は「いいえ」、中止する場合は「キャンセル」にします。

 

4、コンソールが開くと最初にユーザ名を聞かれます。インスタンス接続画面にて記載がある通り、EC2の場合は「ec2-user」となってるのでそのままユーザ名を入力し完了です。これでSSH接続ができました。

 

※macOSの場合は特にソフトのインストールなどが必要なく、インスタンス接続画面にあるコマンドを打ち込むだけで完了します。pemファイルの指定は必要なのでパスを指定するか、対象のpemファイルへ移動してから実行で接続可能になります。(権限の設定が必要な可能性あり)

~Extra~

コンソールを開いたら、最初にバージョンを最新にしたほうが良いです。バージョーンが古かったりパッケージ類が新しいバージョンが出ている場合があり、その対策として最初に実施する必要があります。コンソール内上部にある案内に従い「sudo yum update」と打ち込みアップデートを進めます。

・sudo=super user do(=root)

・yum =Yellowdog Updater Modifide

最初の段階では一般ユーザとしてログインしています。一般ユーザは権限がないため「yum update」を実行できず「you need to be root to perform this command」と返事が返ってきます。rootという一番強い権限をもつ管理者ユーザにならないと実行権限がないので、実行コマンド前にsudoをつけることによりrootユーザと同等でコマンドが実行可能になります。yumはAmazon Linuxを管理しているソフトウェアパッケージシステムの名称です。ディストリビューション毎にコマンドは異なり、この場合は主にRed Hat系Linuxで使用されています。

~まとめ~

以上のことからSSH設定作業は、安心安全な通信を実現するうえで必要不可欠であることがわかります。たとえ難しくても、セキュリティ面を考えるとSSHの設定を実施する・しないで回避できるリスクが大きいので、しっかり理解し設定するに越したことはありません。特に、自前でサーバを構築する場合は最初の難関と言えるでしょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です