「AWS EC2を使ってRailsアプリをデプロイ」のログ01

はじめに

*個人情報っぽいものはhogeで隠している。

作成したインスタンスにパブリックDNSが表示されない場合、ここを参考

AWSでPublic DNS(パブリックDNS)が割り当てられない時の解決法 - Qiita

EC2ログインする

brew install python
brew install awscli
↑まずやる

wadakazuma@kw desktop % mkdir ~/.ssh
wadakazuma@kw desktop % cd ~/.ssh   
wadakazuma@kw .ssh % chmod 600 key_berlin_now.pem 
wadakazuma@kw .ssh % ssh -i key_berlin_now.pem ec2-user@ここにElasticIP
ssh: connect to host 52.197.166.41 port 22: Operation timed out

↓ port:22エラー 

【AWS EC2 エラー】ssh port 22 Operation timed out - Qiita

上によると、セキュリティグループのインバウンドルールの、port22をカスタムからマイipに変える必要があるらしい。その後インスタンスを停止、起動

結果: 行けた(個人情報っぽいものは、hogeで隠した。)

wadakazuma@kw .ssh % ssh -i key_berlin_now.pem ec2-user@ここにelasticip
The authenticity of host 'hogehoge' can't be established.
ECDSA key fingerprint is hogehoge.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

ssh通信による、インスタンスへのログイン

サーバーとクライアントの暗号化された通信

f:id:kaz08:20210206084535p:plain
ssh通信

参照: https://www.kagoya.jp/howto/rentalserver/ssh/

個人情報っぽいものは一応隠している

ローカル

鍵を生成

wadakazuma@kw .ssh % ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/wadakazuma/.ssh/id_rsa): keyの名前登録
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in hoge.
Your public key has been saved in key_berlin_now.pub.
The key fingerprint is:
**************************wadakazuma@kw.local
The key's randomart image is:
ここに線で書かれたboxが表示される
wadakazuma@kw .ssh % ls
自分のキーとpubのキーが生成さてた

それ(鍵)をどの通信の認証で使うかの設定

.ssh % vim config
---------------------------------------------
# 以下を追記
Host mumu_key_rsa
  Hostname 前出のElastic IP (#自分の設定に合わせて)
  Port 22
  User kazumawada (#先ほどのユーザー名)
  IdentityFile ~/.ssh/key_berlin_now_rsa (#秘密鍵の設定)
-------------------------------------------------

サーバ(EC2)

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-0-197 ~]$ sudo su - kazumawada
最終ログイン: 2021/02/05 (金) 02:03:45 UTC日時 pts/1
[kazumawada@ip-10-0-0-197 ~]$ mkdir .ssh
[kazumawada@ip-10-0-0-197 ~]$ chmod 700 .ssh
[kazumawada@ip-10-0-0-197 ~]$ cd .ssh
[kazumawada@ip-10-0-0-197 .ssh]$ vim authorized_keys
vimないに、rsaのpubで出力されたコードを入力。
(ローカルがrsa。サーバーがそのpubのコード)
[kazumawada@ip-10-0-0-197 .ssh]$ vim authorized_keys
[kazumawada@ip-10-0-0-197 .ssh]$ chmod 600 authorized_keys
[kazumawada@ip-10-0-0-197 .ssh]$ exit

700読み込み書き込み実行ができる

https://chmodcommand.com/chmod-700/

600読み込み書き込みができる

https://chmodcommand.com/chmod-600/


これで通信できると思ったら、

エラーでた

permission deny

no such identity: /Users/wadakazuma/ssh/key_berlin_now_rsa:
 No such file or directory
kazumawada@elasticIpがここに: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

ローカルからキーを入力したら、ElasticIPが表示されたから、繋がってはいると思う。

EC2へのSSH接続でPermission denied (publickey). が出たとき - Qiita

SSH を使用した Linux インスタンスへの接続

解決 typoだった。

.ssh内のconfigファイル(鍵をどの通信で使用するかの設定)をvimでもう一度見返したら、.sshのはずがsshになっていた。それを直したら、通った。

.sshが、sshと書いていたから、通らなかった。これは.sshと書き直した。

Host key_rsa
  Hostname 前出のElastic IP (#自分の設定に合わせて)
  Port 22
  User ユーザー名
  IdentityFile ~/.ssh/key_rsa (#秘密鍵の設定)

インスタンスへログインできた。

次は、

EC2インスタンスの環境構築

(Rubyとかを動くようにするため。)

エラー。

sudoで環境をインストールしようと思ったら、passwordを聞かれたけど、思いつく限りのものを打ってみたがうまくいかない。

AWSの初期設定でrootパスワードを設定する - Qiita

そもそもパスワードが初期では設定されていないからする必要があるみたい。

一旦ec2userでログインする。そこで以下のように、passwed設定

#一旦ec2userでログイン
wadakazuma@kw .ssh % ssh -i key_berlin_now.pem ec2-user@hogehoge
Last login: Fri Feb  5 02:52:56 2021 from hoge

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

https://aws.amazon.com/amazon-linux-2/
#パスワードみ設定のユーザーに行く
[ec2-user@ip- ~]$ sudo su - kazumawada
[root@ip-10-0-0-197 ~]# passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@ip-10-0-0-197 ~]#

exitしてec2インスタンスにもう一回password入力してみる。

[ec2-user@ip-10-0-0-197 ~]$ sudo su - kazumawada
最終ログイン: 2021/02/05 (金) 07:18:12 UTC h175-hogeから開始日時 pts/1
[kazumawada@ip-10-0-0-197 ~]$ passwd
Changing password for user kazumawada.
Changing password for kazumawada.
(current) UNIX password: 
passwd: Authentication token manipulation error
[kazumawada@ip-10-0-0-197 ~]$

確かにパスワードはwmkm0511

sudo adduser kazumawada
[ec2-user@ip-10-0-0-197 ~]$ sudo passwd wmkm0511
passwd: 不明なユーザー名 'wmkm0511'。
[ec2-user@ip-10-0-0-197 ~]$ sudo visudo
wadakazuma@kw .ssh % sudo su - kazumawada
wadakazuma is not in the sudoers file.  This incident will be reported.
wadakazuma@kw .ssh % sudo adduser kazuma 
wadakazuma is not in the sudoers file.  This incident will be reported.
wadakazuma@kw .ssh % ssh -i key_berlin_now.pem ec2-user@hoge
Last login: Fri Feb  5 01:26:32 2021 from h175-177-04

AWS EC2(Linux)パスワード認証設定方法 - Qiita

EC2インスンス(Linux)作成した際、デフォルトは鍵認証しか許可されていないため、 パスワード認証を許可したい場合は、sshd_configの設定が必要です。

やったこと

#まずルートで入る
sudo su -
#このファイルは、ルート以外では入れなかったから。
vi /etc/ssh/sshd_config
PasswordAuthentication yesを追加した。
[sudo] kazumawada のパスワード:
残念、また試してください。

まだパスワードが違うって言われた。

現状整理

なぜかkazumawadaUserでsudoコマンドを実行できない。

パスワードが違うと言われるから。

・ec2user kazumawadaのパスワードの確認方法

・ec2インスタンスでのsudo実行方法を調べる必要がある。

sudoで入って、

visudo

をやってみる。

すでにkazumawadaがallになっていた。

これでログインして実行っしてみる

ssh -i key_berlin_now_rsa kazumawada@hoge

結果同じ。

これを試す。

CentOSでuserをsudo可能にする - Qiita

Amazon EC2にSudoユーザーを追加する。 - Qiita

解決

↓どうやったか。

passwordを要求されないようにしてみる。

visudo
kazumawada ALL=(ALL)       NOPASSWD:ALL

EC2にRubyなどをもろもろをインストールしていく

参考:

(デプロイ編①)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで - Qiita

f:id:kaz08:20210206085453j:plain