きゃまなかのブログ

新卒6年目の WEB エンジニアです。 Ruby on Rails の TIPS を中心にブログ書いてます。 去年まで運用・保守のエンジニアだったので、サーバサイドの記事もたまに書きます。 よろしくお願いします。

【AWS】.ssh/config を利用して、ログイン時のコマンドを省略する

概要

インスタンスに毎回ログインする際、ユーザ名と鍵 PATH を記載するのが面倒くさいので、設定ファイル (.ssh/config) にログインに必要な情報を記載して、ログイン時のコマンドを省略しようと思います。

はじめに

.ssh/config とは

SSH を利用してインスタンスへログインする際に利用される設定ファイルです。

AWS にログインする際のユーザ名

サーバ OS によって、ログイン時に利用するユーザ名が異なる様です。

サーバ OS ユーザ名
 Amazon Linux  ec2-user
 RHEL  ec2-user または root
 Ubuntu  ubuntu または root
 Centos  centos
 Fedora  ec2-user
 SUSE  ec2-user または root

参考:SSH を使用した Linux インスタンスへの接続 - Amazon Elastic Compute Cloud

キーペアの作成

コマンドラインで ssh-keygen を実行する必要はありません。

AWS ではインスタンスを作成したときに、キーペアを作成して(作成した秘密鍵を)ダウンロードする事が出来ます。

一度作成したキーペアはインスタンスを生成する度に使い回すことが可能です。

もし秘密鍵を無くしてしまった場合、既存のキーペアは再ダウンロードできないので、新しく作り直してください。

f:id:kyamanak83:20170815001757p:plain

ログイン方法

SSHコマンドでログイン

ssh -i <鍵 PATH> <ユーザ名>@<ホスト名> のフォーマットでコマンドを実行します。

$ ssh -i amazon_private_key-20160805.pem ec2-user@ec2-00-00-000-000.us-west-2.compute.amazonaws.com

.ssh/config を利用してログイン

設定ファイルの記載内容を確認します。ホスト名や鍵名は自分のものに書き換えてください。

$ cat .ssh/config
Host AWS
    HostName ec2-00-00-000-000.us-west-2.compute.amazonaws.com
    User ec2-user
    IdentityFile amazon_private_key-20160805.pem

設定ファイルに記載しておくと、簡単なコマンドでログインができます。

$ ssh AWS
Last login: Wed Nov 23 06:38:46 2016 from aa200000000000000000.userreverse.dion.ne.jp

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

https://aws.amazon.com/amazon-linux-ami/2016.09-release-notes/

その他

ダウンロードした秘密鍵を他のフォルダに移動したりする事があると思います。

秘密鍵の Permission は 600 じゃないといけないので注意してください。

Owner(所有者) だけが Read&Write できる権限です。

# Permission が悪いと以下のようなエラーが表示されます
$ ssh AWS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazon_private_key-20160805.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "amazon_private_key-20160805.pem: bad permissions"
ec2-user@ec2-user@ec2-00-00-000-000.us-west-2.compute.amazonaws.com: Permission denied (publickey).

# Permission を 600 に変更してください
$ sudo chmod 600 amazon_private_key-20160805.pem

$ ls -l amazon_private_key-20160805.pem
.rw-------@ 1.7k kyamanak  5 Aug  2016 amazon_private_key-20160805.pem

まとめ

今回は、Amazon Linux を利用してログインしてみました。

インスタンスにログインするための最低限の .ssh/config の設定をまとめました。