Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

AWSでよく使うコマンドをざっくりまとめてみた

目次

概要

以前AWSを触っていた時によく使ったコマンドをまとめます。

SSH接続する時に使うchmodコマンド

SSH接続する時に、pemファイルをSSHキーとして使用します。 pemファイルをSSHキーとしてSSH接続する場合、必ずpemファイルの権限を変更します。ファイルの権限を変更する場合、chmodコマンド(チェンジモード)を使用します。

chmod 600 pemファイルの相対パス

理由は、AWSからダウンロードした直後のpemファイルの権限が緩すぎるからです。 以下はlsコマンドでみたpemファイルの権限です。

-rw-r--r--@  1 yuuki_haga  staff        1674 Nov 10 19:19 practice_ssh_key.pem

このファイルの所有者はyuuki_haga、所有グループはstaffです。所有者はファイルの読み書きができますが、所有グループとその他のユーザーは読み取りしかできません。この状態でSSH接続をすると、以下のエラーが出ます。

'practice_ssh_key.pem' のパーミッション 0644 は開きすぎています。
秘密鍵のファイルは他人がアクセスできないようにする必要があります。
この秘密鍵は無視されます。
鍵の読み込み "practice_ssh_key.pem": 不正なアクセス権
ec2-user@18.179.9.168: パーミッションが拒否されました (publickey,gssapi-keyex,gssapi-with-mic)。

そのため、自分以外の人が操作できないようにファイルの権限を変更しておきます。

sshコマンド

EC2インスタンスに接続(ログイン)したい時に使用します。

ssh -i pemファイルの相対パス ec2-user@EC2インスタンスのパブリックIPアドレス

(※)ちなみに、ホームディレクトリ配下に.sshというディレクトリを作成して、その配下にpemファイルをmvコマンドで配置します。

# .sshディレクトリの作成
% mkdir ~/.ssh

# pemファイルの移動
% mv Downloads/プライベートキーの名前.pem .ssh/

その後、.sshディレクトリ配下にconfigファイルを作成します。 configファイルに以下の内容を書きます。

Host 接続先名
  HostName Elastic IPアドレス
  User ec2-user
  IdentityFile ~/.ssh/プライベートキーの名前.pem

これで以下ののコマンドを実行するだけで接続できるようになりました。 コマンドを打つ際はカレントディレクトリを.sshにする必要はありません。

ssh 接続先名

# 接続先名がec2_for_ecの場合
ssh ec2_for_ec

yum updateコマンド

EC2インスタンスのAMIをAmazon Linuxにした場合、ライブラリ(パッケージ)をyumで管理しています。EC2インスタンスSSH接続した直後は、以下のコマンドを実行してライブラリを最新バージョンにアップデートします。ちなみにyumではライブラリをパッケージという単位で管理します。 -yはオプションで全ての問い合わせにyesと答えます。

sudo yum update -y

yum installコマンド

yumでライブラリ(パッケージ)をインストールしたい時に使用します。

sudo yum -y install パッケージ名

systemctlコマンド

systemctl(システムコントロール)コマンドは、指定したサービス(アプリケーション)を起動、停止、再起動させたり、起動状態の確認をするためのコマンドです。ApacheやNginxを起動させるのに使います。サービス名.serviceの後ろの.serviceは省略可能です。

systemctl start

systemctl startを実行すると、サービスを起動させることができます。

sudo systemctl start サービス名

systemctl status

systemctl statusを実行すると、サービスの起動状態を確認することができます。

sudo systemctl status サービス名

(※)statusのコマンド以外にもプロセスを確認することで、サービスが起動しているかを確認できます。プロセスとは、サーバー上で実行中のプログラムのことです。

// 全てのプロセスをCPUやメモリ使用率付きで表示します。
ps -axu

systemctl restart

systemctl restartは、サービスを再起動させるコマンドです。サービスがインストールしたライブラリをちゃんと読み込めるようにするときに使います。

sudo systemctl restart サービス名

systemctl enable

systemctl enableを実行すると、サービスを自動起動するようにできます。サーバーが停止したり再起動してまた起動するときに、自動でサービスが起動するようになります。

sudo systemctl enable サービス名

以下のコマンドを実行して、ちゃんとenabledが出れば自動起動が設定されています。

sudo systemctl is-enabled サービス名

sudo systemctl stop

systemctl stopを実行すると、サービスを停止させることができます。

sudo systemctl stop サービス名

digコマンド

digコマンドは、 ドメインに紐づくIPアドレスの情報や、IPアドレスに紐づくドメインの情報を調べたいときに使用します。 digの後にドメイン名を指定します。ドメインのネームサーバーを知りたいときはNSを指定します。digコマンドはいろいろな情報が表示されるので、シンプルにネームサーバーの情報だけ知りたかったら、+shortというオプションを加えます。 以下のように使うことで、ドメインを管理しているネームサーバーの情報を取得できます。

// ドメインを管理するネームサーバーを知りたいので、NSを指定した
dig ドメイン名 NS +short

wgetコマンド

wgetコマンドは URLを指定してファイルをインストールするコマンドです。

wget url名

tarコマンド

tarコマンドは 複数のファイルを圧縮したり解凍するコマンドです。 以下にファイル解凍の例を示します。xzvfはxが解凍、zがgzipを使用、vが圧縮解凍状況を表示、fが圧縮ファイル名を指定するオプションです。

tar xzvf 圧縮ファイル

cpコマンド

cpコマンドはファイルをコピーするコマンドです。以下に例を示します。-r *で現在のディレクトリ以下の全てのファイルとディレクトリを指定しています。/var/www/html/はコピー先です。つまり、カレントディレクトリは以下の全てのファイルとディレクトリを/var/www/html/にコピーしていることを意味しています。

sudo cp -r * /var/www/html/

chownコマンド

chownコマンドは、ファイルの所有者やグループを変更するコマンド

chown [オプション] ユーザー[:グループ] ファイル

終わり

まだあると思うので、今後AWSを使う上でよく使うコマンドがあったら追記します。

参考記事

【yum入門】今すぐ使えるオプション一覧 | UX MILK

ざっくりsystemctlコマンド - Qiita

ざっくりsystemctlコマンド - Qiita

Linux【ワイルドカードと正規表現】の違いと変換,展開の動作 ~ ls, grep, findでの具体例の解説~ | SEの道標

Linuxコマンド【 chown 】ファイルの所有者やグループを変更 - Linux入門 - Webkaru