Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

AWS EC2へのSSHログイン

updated on 2019-04-07

イメージ

EC2へのSSHログイン


前提: 

awscliが導入済み 導入してない場合はこちらを参照

EC2のキーペアを作成済み 作成してsshフォルダ移動、権限付与までしてない人はこちらを参照



インスタンスへのログイン設定

EC2インスタンスにログインできるユーザーとして、AWSでは、デフォルトでec2-userという名のユーザーが用意されている。


手順1: ec2-userでログイン

$ mv Downloads/administrator-key-pair-ap-northeast-1.pem .ssh/ (キーペアををすでに .ssh まで移動している人は飛ばして良い administrator-key-pair-ap-northeast-1.pemは自分のキーペア名)
$ cd .ssh/ (ディレクトリをsshに移動)
[.ssh] $ chmod 400 administrator-key-pair-ap-northeast-1.pem (所有者のみread権限 すでにしている人は飛ばす)
[.ssh] $ ssh -i administrator-key-pair-ap-northeast-1.pem ec2-user@54.250.70.47 (公開鍵を利用してec2-userとしてログイン 54.250.70.47は自分のEC2パブリックIPかパブリックDNS名を指定)

ssh-i <key-pair>.pem <ユーザ名>@<パブリックIP or パブリックDNS名>

The authenticity of host '52.68.~~~~~~ (52.68.~~~~~~)' can't be established.
RSA key fingerprint is eb:7a:bd:e6:aa:da:~~~~~~~~~~~~~~~~~~~~~~~~.
Are you sure you want to continue connecting (yes/no)?
[.ssh] $ yes


手順2: ユーザーを作成し、作成したユーザーにマスター権限を与える

[ec2-user|~]$ sudo adduser tatsuya (新規ユーザー名の登録 adduserでなくuseraddでも良い)
間違って作った時は
[ec2-user|~]$ sudo userdel -r tatsuya
[ec2-user|~]$ sudo passwd tatsuya
(ユーザーのパスワード設定と確認がされる)
[ec2-user|~]$ sudo visudo
(sudoコマンドの設定ファイルをvimで編集する)
...
root    ALL=(ALL)       ALL
この真下に
tatsuya   ALL=(ALL)       ALL
を書き加える
...

vim の使い方は 

i:入力モード 

esc:閲覧モード 

閲覧モードでZZ:保存

閲覧モードで:q!の後にEnter押下:変更せずに終了

閲覧モードで:wq!の後にEnter押下:書き込んで終了(保存)


編集が完了したら、

[ec2-user|~]$ sudo su - tatsuya (ユーザーの切り替え)
[tatsuya@ip-10-0-0-149 ~]$ に変われば成功


SSH通信によるインスタンスへのログイン設定を作る(ローカル編&サーバー編)


ローカル編

$ cd .ssh
$ ssh-keygen -t rsa
-----------------------------
Enter file in which to save the key ():ec2_key_rsa(作る鍵の名前) 
(#ここでファイルの名前を記述して、エンター)
Enter passphrase (empty for no passphrase): 
(#何もせずそのままエンター)
Enter same passphrase again: 
(#何もせずそのままエンター)
-----------------------------
[.ssh]$ ls
#「ec2_key_rsa」(秘密鍵)と「ec2_key_rsa.pub」(公開鍵)が生成されたことを確認
[.ssh]$ vi config
(#VIMを起動し、設定ファイルを編集する)
-----------------------------
Host dragonarrow (この部分がsshコマンドの一部になる)
  Hostname 54.250.70.47 (前出の固定IP or パブリックDNS名 #自分の設定に合わせて)
  Port 22
  User tatsuya (#先ほどのユーザー名)
  IdentityFile ~/.ssh/ec2_key_rsa
-----------------------------
[.ssh]$ cat ec2_key_rsa.pub
(#鍵の中身をターミナル上に出力→ssh-rsa~~~~最後までをコピーしておく)


重要

これでローカル設定は終了だが、補足!!

githubのSSH接続設定経験がある人 .ssh/配下に

config
ec2_key_rsa
ec2_key_rsa.pub
id_rsa
id_rsa.pub
known_hosts

があると思うが、筆者はこの階層に

$ mkdir AWS
でAWSフォルダを作って
$ cd AWS
$ ssh-keygen -t rsa
をしてAWS配下にec2_key_rsa, ec2_key_rsa.pubを作った

 

つまり、.ssh配下には AWSやgithubなどサーバーごとにフォルダを作って鍵を入れ込み.ssh配下のconfigで読み込むことで見易さと管理しやすさを維持した。

[.ssh配下] 
config
github(配下にgithub秘密鍵id_rsa 公開鍵id_rsa.pub)
AWS(配下にEC2秘密鍵ec2_key_rsa 公開鍵ec2_key_rsa.pub)
[config中身]
-----------------------------
Host dragonarrow
    HostName 54.250.70.47
    Port 22
    IdentityFile ~/.ssh/AWS/ec2_key_rsa
    User tatsuya


Host GitHub
    HostName github.com
    IdentityFile ~/.ssh/github/id_rsa
    TCPKeepAlive yes
    IdentitiesOnly yes
    User git
-----------------------------

これでサーバーが増えてもどの鍵がどのプロジェクトか混乱しない

このような管理の仕方もあるようだ!!


サーバー編


[tatsuya|~]$ mkdir .ssh
[tatsuya|~]$ chmod 700 .ssh
[tatsuya|~]$ cd .ssh
[tatsuya|.ssh]$ vi authorized_keys
(#vimが開く)
-----------------------------
ssh-rsa asfs.....aef
(#先ほどコピーした鍵の中身を貼り付け)
-----------------------------
[tatsuya|.ssh]$ chmod 600 authorized_keys
(所有者のみread write権限)
[tatsuya|.ssh]$ exit
[ec2-user|~]$ exit

サーバー編終了


いざ接続!!

[~]$ ssh dragonarrow (configのHostで指定した語句がHostNameの代わりになってくれる)
接続できれば終了!!


初めてのサーバー構築はかなり難しかったがなんとか完了!!   


参考文献