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 ~]$ に変われば成功
ローカル編
$ 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の代わりになってくれる) 接続できれば終了!!
初めてのサーバー構築はかなり難しかったがなんとか完了!!