システム開発 - AWS WebサーバーへのSSH接続と基本的なコマンド

 

前回のAWS DNSの設定(Route53)でDNS設定を行い、無事AWS上でのおおまかな設定は完了しました。

今回は、SSHでWebサーバーに接続し、基本的なコマンドを説明します。

今回の設定は一人のユーザーが使用する前提です。多人数で使用する場合には、よりセキュアな設定を行ってください。

環境

Amazon Linux 2

SSHとは

SSHとは、Secure Shellの略で、ネットワークに接続されたサーバーと、ローカルのパソコンをセキュア(通信の暗号化)につなぐ、リモート操作用のサービスです。

SSHで接続するには、WindowsではTera Termが有名だですが、現在は「Rlogon」が主流のようです。また、Macでは、ユーティリティーにあるTerminalを使ってログインします。

SSH接続のための情報を確認

IPアドレス

  • AWSコンソールを表示
  • 「サービス」から「EC2」を選択
  • 左メニュー「インスタンス」を選択
  • 対象のインスタンス(web_drop-web)のチェックボックスをチェック
  • 下に表示される「インスタンス概要」の「パブリックIPv4アドレス」を確認

前回のAWS IPアドレスの固定(Elastic IPアドレス)の手順を行っていれば、IPアドレスは常に同じものが表示されますが、行っていない場合は、サーバーを再起動すたびに、IPアドレスが変更されますので注意してください。

SSH認証鍵

AWS Webサーバーの構築(EC2)の「キーペア(ログイン)の設定」でダウンロードしたファイルがSSHの認証鍵となります。

Rloginのダウンロード

当環境はWindowsですのでRloginを使用していきます。

Rloginは下記からダウンロードできます。

https://kmiya-culti.github.io/RLogin/

Rloginの設定

インストールが完了したら、起動してください。

「新規」をクリック

必須の設定

エントリー(上)/コメント(下)

  • 上段にわかりやすい名称を入力
  • web_drop-web-1aなど

ホスト設定:ホスト名(サーバーIPアドレス)

  • 上記で確認した「IPアドレス」を入力

ホスト設定:ログインユーザー名

ec2-user

  • EC2のデフォルト設定です

ホスト設定:SSH認証鍵

  • クリックして、上記で確認したSSH認証鍵を選択する
  • キーペアファイル(web_drop-ssh-key.pem)を選択
  • 左のメニューの「サーバー」「プロトコル」をクリック

SSH:KeepAliveパケットの送信間隔(sec)

チェック

  • 勝手に接続が切れないようになる
  • 上段のTELNETと間違わないよう注意

オプション設定

個人の好みですが、クリップボードの設定を行います。

  • 左のメニューの「クリップボード」をクリック

下記項目のチェックボックスをクリックします

クリップボード:左クリックの範囲指定だけでクリップボードにコピーする

クリップボード:コピー時に範囲指定を解除しない

クリップボード:右クリックでペースト

「OK」ボタンをクリックし、設定を保存します。

SSH接続

Rloginで設定したEntryを選択し「OK」ボタンをクリックします。

初回ログイン時のみ「公開鍵の確認」が表示されますので、「接続する」をクリックしてください。

また、「信頼するホスト鍵のリストを更新しますか?」が表示された場合には、「はい」をクリックしてください。

ログインに成功すると下記のように表示されます。

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
13 package(s) needed for security, out of 16 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-10-127 ~]$ 

まずは下記について説明します。

[ec2-user@ip-10-0-10-127 ~]$ 

「$」マークの後に、コマンドを色々入力していきます。

この表示は、「ec2-user」ユーザーが「ip-10-0-10-127」(ホスト名)の「~」にログインしていることを表示しています。

ディレクトリ内のファイルの確認

まず、下記を実行してみてください。

[ec2-user@ip-10-0-10-127 ~]$ ls -l
total 0
[ec2-user@ip-10-0-10-127 ~]$

「ls」コマンドは、現在のディレクトリ内のファイル一覧を表示するコマンドです。
「-l」オプションを詳細な情報を表示してくれます。

ここでは何も入っていなさそうです。

もう一度、今度は「-a」オプションを追加して実行してみます。

[ec2-user@ip-10-0-10-127 ~]$ ls -al
total 16
drwx------ 3 ec2-user ec2-user 95 Nov 6 12:45 .
drwxr-xr-x 3 root root 22 Nov 5 14:09 ..
-rw------- 1 ec2-user ec2-user 308 Nov 6 15:42 .bash_history
-rw-r--r-- 1 ec2-user ec2-user 18 Jul 15 2020 .bash_logout
-rw-r--r-- 1 ec2-user ec2-user 193 Jul 15 2020 .bash_profile
-rw-r--r-- 1 ec2-user ec2-user 231 Jul 15 2020 .bashrc
drwx------ 2 ec2-user ec2-user 29 Nov 5 14:09 .ssh
[ec2-user@ip-10-0-10-127 ~]$ 

「-a」オプションは、全てのファイル(--all)を表示するオプションで、隠しファイルも表示してくれます。

左から「パーミッション」「所有者」「グループ」「ファイルサイズ」「更新日時」「ファイル名」の順で表示されます。

また、「パーミッション」の一番左に「d」と表示されている、又は青文字で表示されているのはディレクトリであることを示します。

細かい説明は省きますが、ここにはec2-userユーザー専用のファイルが保存されており、コマンドの実行履歴やSSH接続のための秘密鍵などが保存されています。

ディレクトリの移動

今度は2行連続でコマンドを実行します。

[ec2-user@ip-10-0-10-127 ~]$ cd ..
[ec2-user@ip-10-0-10-127 home]$ ls -l
total 0
drwx------ 3 ec2-user ec2-user 95 Nov 6 12:45 ec2-user
[ec2-user@ip-10-0-10-127 home]$ 

「cd」は、change directryの略で、ディレクトリの移動に使用するコマンドです。「cd」の後ろにスペースをあけ、移動したディレクトリを指定します。

今回の「..」は一つ上のディレクトリを指します。

ここでファイルの一覧を表示すると「ec2-user」のディレクトリのみが表示され、「[ec2-user@ip-10-0-10-127 home]$」の部分で、現在「home」ディレクトリにいることがわかります。

さらに次のコマンドでを実行します。

[ec2-user@ip-10-0-10-127 home]$ cd ..
[ec2-user@ip-10-0-10-127 /]$ ls -l
total 16
lrwxrwxrwx 1 root root 7 Oct 13 03:54 bin -> usr/bin
dr-xr-xr-x 4 root root 4096 Oct 13 03:58 boot
drwxr-xr-x 15 root root 2900 Nov 5 14:09 dev
drwxr-xr-x 81 root root 8192 Nov 6 13:30 etc
drwxr-xr-x 3 root root 22 Nov 5 14:09 home
lrwxrwxrwx 1 root root 7 Oct 13 03:54 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Oct 13 03:54 lib64 -> usr/lib64
drwxr-xr-x 2 root root 6 Oct 13 03:53 local
drwxr-xr-x 2 root root 6 Apr 10 2019 media
drwxr-xr-x 2 root root 6 Apr 10 2019 mnt
drwxr-xr-x 4 root root 27 Oct 13 03:57 opt
dr-xr-xr-x 153 root root 0 Nov 5 14:09 proc
dr-xr-x--- 3 root root 124 Nov 6 12:45 root
drwxr-xr-x 28 root root 980 Nov 7 06:45 run
lrwxrwxrwx 1 root root 8 Oct 13 03:54 sbin -> usr/sbin
drwxr-xr-x 2 root root 6 Apr 10 2019 srv
dr-xr-xr-x 13 root root 0 Nov 5 14:09 sys
drwxrwxrwt 8 root root 172 Nov 7 06:45 tmp
drwxr-xr-x 13 root root 155 Oct 13 03:54 usr
drwxr-xr-x 19 root root 269 Nov 5 14:09 var
[ec2-user@ip-10-0-10-127 /]$ 

さらに上の階層に上がり、一覧を表示します。現在のディレクトリは「/」ですので一番最上位の階層にきていることがわかります。

※パーミッションの一番左の「l」はシンボリックリンクで、パーミッションの一番右に「t」があるのはスティッキービットです。詳しく調べたい場合には、これらのキーワードを検索してみてください。

最初にいたディレクトリに戻るには、下記を実行します。

[ec2-user@ip-10-0-10-127 /]$ cd /home/ec2-user
[ec2-user@ip-10-0-10-127 ~]$ ls -al
total 16
drwx------ 3 ec2-user ec2-user 95 Nov 6 12:45 .
drwxr-xr-x 3 root root 22 Nov 5 14:09 ..
-rw------- 1 ec2-user ec2-user 308 Nov 6 15:42 .bash_history
-rw-r--r-- 1 ec2-user ec2-user 18 Jul 15 2020 .bash_logout
-rw-r--r-- 1 ec2-user ec2-user 193 Jul 15 2020 .bash_profile
-rw-r--r-- 1 ec2-user ec2-user 231 Jul 15 2020 .bashrc
drwx------ 2 ec2-user ec2-user 29 Nov 5 14:09 .ssh
[ec2-user@ip-10-0-10-127 ~]$ 

ルートディレクトリに戻るには下記のように実行します。

[ec2-user@ip-10-0-10-127 home]$ cd /
[ec2-user@ip-10-0-10-127 /]$ ls -l
total 16
lrwxrwxrwx 1 root root 7 Oct 13 03:54 bin -> usr/bin
dr-xr-xr-x 4 root root 4096 Oct 13 03:58 boot
drwxr-xr-x 15 root root 2900 Nov 5 14:09 dev
drwxr-xr-x 81 root root 8192 Nov 6 13:30 etc
drwxr-xr-x 3 root root 22 Nov 5 14:09 home
lrwxrwxrwx 1 root root 7 Oct 13 03:54 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Oct 13 03:54 lib64 -> usr/lib64
drwxr-xr-x 2 root root 6 Oct 13 03:53 local
drwxr-xr-x 2 root root 6 Apr 10 2019 media
drwxr-xr-x 2 root root 6 Apr 10 2019 mnt
drwxr-xr-x 4 root root 27 Oct 13 03:57 opt
dr-xr-xr-x 153 root root 0 Nov 5 14:09 proc
dr-xr-x--- 3 root root 124 Nov 6 12:45 root
drwxr-xr-x 28 root root 980 Nov 7 06:45 run
lrwxrwxrwx 1 root root 8 Oct 13 03:54 sbin -> usr/sbin
drwxr-xr-x 2 root root 6 Apr 10 2019 srv
dr-xr-xr-x 13 root root 0 Nov 5 14:09 sys
drwxrwxrwt 8 root root 172 Nov 7 06:45 tmp
drwxr-xr-x 13 root root 155 Oct 13 03:54 usr
drwxr-xr-x 19 root root 269 Nov 5 14:09 var
[ec2-user@ip-10-0-10-127 /]$ 

ここまでで、まずは、ディレクトリの全体構造とディレクトリ間の移動方法が理解できたと思います。

root権限

今後、なんらかの設定を変更する場合や、パッケージのインストール時など、root権限を持つ必要がある場合が多々発生しますので、その基本を解説します。

次のコマンドを実行します。

[ec2-user@ip-10-0-10-127 /]$ sudo -i
[root@ip-10-0-10-127 ~]# 

sudo コマンドは、ルート権限で様々実行するためのコマンドですが、それに「-i」オプションを付けることで、自身が常にルート権限を得た状態になります。

ルート権限を得たことで、ユーザー名も「root」となり、一番右の部分が「$」から「#」に変わります。

また、rootユーザーから元に戻るには下記のコマンドを実行します。

[root@ip-10-0-10-127 ~]# exit
logout
 [ec2-user@ip-10-0-10-127 /]$

同じようなコマンドで「su」がありますが、今回のec2-userにはrootのパスワードが設定されていませんので、sudoコマンドでrootユーザー(スーパーユーザー)になる方法を紹介しています。

rootユーザーになれるユーザーの確認

まずは自分がどのグループに所属している確認します。

[ec2-user@ip-10-0-10-127 /]$ groups ec2-user
ec2-user : ec2-user adm wheel systemd-journal
[ec2-user@ip-10-0-10-127 /]$ 

「wheel」という表示が、rootユーザーになれるグループになります。

そのグループに所属するユーザーの確認です。

[ec2-user@ip-10-0-10-127 /]$ getent group wheel
wheel:x:10:ec2-user
[ec2-user@ip-10-0-10-127 /]$ 

現在は、ec2-userのみ所属していることがわかります。

まとめ

今回はかなり基礎的な部分ではありましたが、SSHの接続と基本的なコマンドについて確認しました。

次回は実際にWebサーバーにPHPとApacheのインストールを行っていきます。

次回:AWS WebサーバーへPHPとApacheのインストール

一覧:AWS サーバー立ち上げ設定まとめ

文責:フライング・ハイ・ワークス代表 松田 治人(まつだ はるひと)
会社では、Laravelを中心としたエンジニアとして働いており、これまでに50本以上のLaravelによるWebアプリケーションの構築や東京でホームページ制作をしています。
エンジニアとして弊社で働きたい方、お仕事のご相談など、お待ちしております。

WEBサイト制作のお問い合わせ、お見積り依頼、ご質問は
こちらのお問い合わせフォームよりお願いいたします

メールお問い合わせはこちら

フライング・ハイ・ワークスの紹介

フライング・ハイ・ワークスは、東京のホームページ制作・Web制作会社・システム開発会社です。東京都及びその近郊(首都圏)を中心として、SEO対策を意識したPC及びスマホのサイトをワンソース(レスポンシブ対応)で制作します。

実績

デザイナーチームは、グラフィックデザインやイラストの制作も得意としており、著作権を意識しない素材の提供が可能です。システム・コーディングチームでは、Laravelなどを使用したスクラッチからのオリジナルシステム開発を始め、WordPressのカスタマイズを得意としております。

また、SEOやランディングページ(LP)、広告向けバナーなどを他社様でやっていた作業の引継ぎでも問題ありません。制作実績は多数ございますので、お客様に合わせたご提案が可能です。

500点以上のフライング・ハイ・ワークスの制作実績ページをご覧ください!

東京のホームページ制作・Web制作のお問い合わせ、お見積り依頼、相談、質問は
こちらのお問い合わせフォームよりお願いいたします

メールお問い合わせはこちら