むらじゅん風呂具

ITエンジニアとたまに歌手と司会などで活動する村中淳のブログ

AWS 2段階認証(MFA)を導入した

やったことがなかったのでやってみた。

こちらがとても参考になりました。

qiita.com

仕組みはやってみるとわかります。

対象ユーザを作成

IAMのページからサクッと作る。

対象ユーザの認証情報へ。

MFAデバイスの割り当て にある管理をクリック。

MFA デバイス管理ページが出るので、

一番上の仮装MFAデバイスにチェックを入れて続行。

仮装 MFAデバイスの設定ページが出るので、 お持ちのスマホに仮装MFAアプリを入れましょう。

僕は、Google Authenticatorってやつを使いました。

Google Authenticator

Google Authenticator

  • Google LLC
  • ユーティリティ
  • 無料

インストールしたら、先ほどのページある「QRコードの表示」を押して、

導入したアプリで読み取る。

こんな感じで番号が表示されるので、それを設定ページに入力。

※時間経てば別の番号に切り替わるので2つ入れる。

入力後、MFAの割り当てをクリック。

作ったユーザでログインしてみる

アカウント名、パスを入れると「MFA認証」が出るので、

同じようにアプリで番号確認して入力すればログイン完了。

ええやん。

AWSの特徴でUIコロコロ更新変わるのでご了承ください

※2018年11月13日時点の情報

CentOS7 MySQL5.7でのrootパスワード強制変更

mysqlインストール、起動後に接続しようとした際に発生したエラー。

# mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

まずはいつものグーグル先生から辿る。

qiita.com

どうやら、mysql.sockファイルがないことが原因らしい。

# ls -lt /var/lib/mysql/mysql.sock
ls: /var/lib/mysql/mysql.sock にアクセスできません: そのようなファイルやディレクトリはありません

こやつを作る。

# touch /var/lib/mysql/mysql.sock

再度接続。

が!!ダメ!!!

# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

うーん?パスワード入れろってこと?? 入れるわ。

# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

なんでじゃ!? ちなみにパスワードは以下のコマンドで確認可能。

# grep -e 'A temporary password is generated for root@localhost' /var/log/mysqld.log

ここに関しては要わからんだったので、最終的にrootパスの強制変更に落ち着く。

www.rite.jp

mysqlを一旦停止して、–skip-grant-tablesオプションで起動するよう設定。

# systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

このオプションは、

サーバーの権限システムをまったく使用せずに開始され、 サーバーへのアクセス権を持つすべてのユーザーに、 すべてのデータベースに対する無制限アクセス権が与えられます。

とのこと。 ※MySQL 5.6 リファレンスマニュアル参照

mysqlを停止して再度起動。

んで試すと入れた!やったぜ!

# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

んで、パスワードの設定はこうするらしい。

update user set authentication_string=password("設定するパスワード") where user='root';

やってみる。

mysql> update user set authentication_string=password("***") where user='root';
ERROR 1046 (3D000): No database selected

「自分、データベース選んでないやん」って怒られる。

データベースを選ぶ。

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

変わったので今度こそ。

mysql> UPDATE user SET authentication_string=password("***") WHERE user='root';
ERROR 1054 (42S22): Unknown column `***` in 'field list'

うん?「カラムがないやん」って言われている。

ここも調べてみたら、なんてことはない。

入力した新しいパスワード(***の部分)は、

'(シングルクォート)で括らないとダメ。

直す。

mysql> update user set authentication_string=password('***') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql>

できた!

テーブルの再読み込みを行う。

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>

mysqlの再起動をする。 と同時に設定していた、–skip-grant-tablesオプションを解除する。

これ忘れるとmysqlいじっている時にエラーが出るので注意。

# systemctl stop mysqld
# systemctl set-environment MYSQLD_OPTS=""
# systemctl start mysqld

よし、接続する!!

# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

ミッションコンプリー。

さらっと書いたが結構時間がかかってしまった。

DBまわりもやりながら覚えないとなあ。

誰かの助けになれば幸いです。

gitとGitHubの復習

gitとGitHubってなんやねん?っとなっている人は、 以下のUdemyコースで無料で学べます。

はじめてのGitとGitHub | Udemy

1回やったきりだったので改めて復習。

Git と GitHub

バージョン管理するもの。 「どのファイルの何を」「誰が」「いつ」「何のために」、これらを変更した履歴を残せる。

Gitの仕組み

変更履歴を時系列順に記録する。 また記録を過去にさかのぼることが可能。 記録する際はコメントをつける。

リポジトリ

変更履歴を記録する場所。 Git init コマンドで新規ローカルリポジトリを作成する。

コミット

個人リポジトリに変更履歴を記録。

プッシュ

共有リポジトリに記録する。

個人のPCで作業をする → コミットする → プッシュするという流れが基本。

プル

共有リポジトリの情報をローカルに同期する。

GitHub

Gitリポジトリホスティングサービス。 要はオンライン上でファイルを預かってくれる。

GitHubの特徴

プルリクエストによるコラボレーション。 要は複数人でファイルの管理がしやすくなる。

基本的ワークフロー

  1. 作業するフォルダにてローカルリポジトリを作成 → git init コマンド
  2. ファイルの変更をステージングエリアへ追加 → git add コマンド
  3. ローカルリポジトリにコミット → git commit コマンド
  4. リモートリポジトリ(GitHub)にプッシュ → git push コマンド

ローカルリポジトリの作成

作業するフォルダを作成。作成後、そのフォルダに移動。

git init コマンドにて、ローカルリポジトリを作成する。

$ git init
Initialized empty Git repository in /Users/muranakajun/Desktop/test/.git/

GitHub上で作成したリポジトリを同期

GitHubヘログイン。新しいリポジトリを作成する。

名前を入力、Descriptionは説明文が必要なら入れる。

特に見られても困らなければPublicを選択してクリエイト。

そうすっとこんな画面が出て、今回は既にリポジトリ作成済みなので、

…or push an existing repository from the command line のコマンドを実行。

コマンドを実行するとGitHub上で確認できるようになる。

作成したファイル test をクリックすると中身が見える。

変更をコミットするフロー

  1. ファイル変更する
  2. ステージングエリアへ追加
  3. リポジトリにメッセージを付けてコミット

・git status コマンド

ステータスを見るコマンド。 何も変更がない場合は以下のように表示。

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

ファイルに変更を加えた後で同じコマンドを打つとこうなる。

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   test

no changes added to commit (use "git add" and/or "git commit -a")

変更加えてると、add使えと出てくれる。 んで、git add コマンドでステージングエリアに追加。

$ git add .

. をつけるとファイル全部ステージングエリアに動かすぞってこと。

ファイル名指定でもおk。

これでステージングエリアに追加されたことになる。

もっかいステータスを確認する。

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   test

んで、コミットする。

$ Git commit -v

オプション v つけると、変更箇所が確認できる。

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is up to date with 'origin/master'.
#
# Changes to be committed:
#       modified:   test
#
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
diff --git a/test b/test
index 484096a..db2c4f3 100644
--- a/test
+++ b/test
@@ -1 +1,3 @@
 Gitの練習
+・git add
+・git commit

一番上にメッセージつけて保存。

$ git commit -v
[master 1b72555] add, commitのコマンドを追記
 1 file changed, 2 insertions(+)

完了。

git log コマンドで変更履歴が見れる

$ git log
commit 1b7255522e782000a01f7a141a269bc8b870d129 (HEAD -> master)
Author: github muranaka-jun <tonjiru1013@gmail.com>
Date:   Fri Nov 9 13:08:25 2018 +0900

    add, commitのコマンドを追記
    
    講座の復習

commit 7c00af6d5b1047a1c936ac32b88cd6ec2461cf9d (origin/master)
Author: github muranaka-jun <tonjiru1013@gmail.com>
Date:   Fri Nov 9 11:07:13 2018 +0900

    initial commit

不要なファイルを削除する

ローカルリポジトリにあるファイルを削除する。

$ rm second.txt 

git rm コマンドでステージングエリアにファイル消したことを教える。

$ git rm second.txt
rm 'second.txt'

続いてコミットする。

$ git commit -v
[master 7af9e4f] second.txt 削除
 1 file changed, 1 deletion(-)
 delete mode 100644 second.txt

削除処理完了。

複数ファイルの変更をする

複数ファイルを変更、git add . コマンドを打つ。

$ git add .

んでコミットすればおk。

git diff コマンドでローカルとステージングとの差分を確認する

ファイル内容を追記してgit diff コマンドを打つ。

index 94a1902..86b8721 100644
--- a/test
+++ b/test
@@ -3,3 +3,4 @@ Gitの練習
 ・git commit
 ・git rm
 ・git status
+・git diff

ローカルとステージングの差分を表示。

git diff HEAD コマンドでステージングとコミットの差分を確認する

続いてaddしてから、

ステージングとコミットの差分を見る。

$ git diff HEAD
diff --git a/test b/test
index 94a1902..86b8721 100644
--- a/test
+++ b/test
@@ -3,3 +3,4 @@ Gitの練習
 ・git commit
 ・git rm
 ・git status
+・git diff

ステージングとコミットとの差分を表示。

GitHubにプッシュする

git push コマンドを使って、 今までの変更分をGitHub上にのせる。

$ git push origin master
Enumerating objects: 18, done.
Counting objects: 100% (18/18), done.
Delta compression using up to 4 threads
Compressing objects: 100% (12/12), done.
Writing objects: 100% (16/16), 1.62 KiB | 831.00 KiB/s, done.
Total 16 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
To https://github.com/muranaka-jun/test.git
   7c00af6..37a4b0b  master -> master

GitHub画面上で確認できるようになった。

ひととおり必要そうな部分を復習。

リベラルエンジニアズ 金子さんにカジュアル面談していただきました

最近、ツイッターで気になるエンジニアさんをフォローしてますが、 金子さんもその中のお一人。

株式会社リベラルエンジニアズとは

「エンジニアをもっと自由に。」というスローガンを抱えて、 SES業界で社員還元率82〜83%の超ハイレート給与体系をされている会社さんで、 金子さんは代表取締役をされている方です。

金子さんのツイッターを見ると、 随時カジュアル面談を受け付けているとのことで、 話を伺いに行きました。

なぜカジュアル面談をしたか?

僕自身、30過ぎてからエンジニアを始めて、仕事がいろいろと楽しくなってきた。

しかし、エンジニアとして技術力をつけたいと思っているなか、 会社から求められることとの摩擦を感じるようになった。

要は数字を上げろということだ。

ムラジュンは焦りすぎてる」

なんて言葉をかけられることが多くなり、 ちょっとした疑問が浮かぶようになる。

おれが焦っているだけなのか?

技術力の向上はさておき、数字を上げる働き方が正しいのか?

昔からモヤモヤした時は、 ひとりで考えない。 誰かに話をする 社内という閉ざされた中で考えるのもよくないと思ったので、 社外の方にきちんと聞いてみようと思った次第です。

思ったが吉日!すぐ連絡!調整!!はい決定!!

このスピード感がとても大事だと思ってます。

金子さんとってもお話しやすかったです

お会いする前に金子さんに関して、 ググって調べながら人物像を思い浮かべてましたが、正にそのままの人でした。

SESで仕事をされて、業界の悪臭に嫌気が募り、 自らが会社を立ち上げ社員へ高レート還元をする。

そこまでに至った過程、思いを話してくださいました。

僕もいま悩んでいることを話させていただき、 業界のあれやこれやの話を聞いてすごく納得。

同じような状況にいるから(ひえー)。

ただ、そこで悲観的になることはなく、 むしろやるべきことがすっきり見えたことが、とてつもなく大きかったです。

  • 学んだことをアウトプットする。
  • 他のエンジニアさんとコミュニケーションを取る。

シンプルにここから始めて、どんどん経験値を貯めようと思えた、 そして、背中を押してもらえたことで安心、ワクワクするのを感じました。

結論

お話させていただいて大変感謝しております。

いまいま、僕が金子さんに返せるものが何もないと感じているのがとても歯がゆい・・・。

なので、少しでも知名度アップに貢献できるようブログに書いている次第です。

※金子さんに許可いただきました。

もし、僕と同じで気になっているものが少しでもあれば、 カジュアルにお話していただけるので、ぜひ連絡してみてください。

liberal-en.jp

何かまたご縁があった際に、 「村中さん、いい感じっすね!!」 なんて言葉をかけてもらえるよう、迷わず揺れず進んでいこうと思います。

金子さん、ありがとうございました。

はてなブログでマークダウンモードにする

技術的なことをググっていると、いつも不思議に思っていたこういう書き方↓

これどうやってるのか不思議に思ってましたが、「マークダウン」という記述でやってるとのことです。

名前がわかんなくてそこそこググってた・・・。

見やすいし自分でも使いたいなあと思うので、 はてなブログの設定を変更する。

はてなブログでマークダウンモードにする

管理画面の設定から、編集モードにて変更可能です。

ただ、一度別のモードで作成している記事は変更できないとのこと。

実際の記述基本はまずこれくらいを押さえておけばいいかな。

qiita.com

多分、今後一番使うであろうこれ↓

Hello! World!

これは文章の上下にバッククォート3つ使ってます。

まずは慣れるところから。 いい感じにブログを読みやすくしたいと思いまっす。

githubにてssh接続をする(公開鍵・秘密鍵作成から)

備忘録として簡単に記録。

 

githubログイン後、右上のアイコンからsettingをクリック。

 

左側メニューのSSH and GPG keysをクリック。

 

右上のNew SSH Keyをクリック。

 

Titleはお好きに。Keyは自身のPCにて鍵を作成して貼り付ける。

さて、PC側にて鍵を作成する。僕はMacなのでターミナル起動。

 

作成コマンドはssh-keygenコマンドでおk。

コマンド打ったら、鍵を確認。

$ pwd
/Users/muranakajun/.ssh
$ ls -l
total 56
-rw------- 1 muranakajun staff 122 11 5 18:59 config
-rw------- 1 muranakajun staff 1679 11 5 22:30 id_rsa → 秘密鍵
-rw-r--r-- 1 muranakajun staff 428 11 5 22:30 id_rsa.pub → 公開鍵

 

作成した公開鍵の中身をコピーして、GitHubのKeyに貼り付けてAdd SSH keyをクリック。macなら以下のコマンドでコピーしてくれる。

$ pbcopy < ~/.ssh/id_rsa.pub

 

続いて、PC側にてconfig設定を追記。

$ vim /Users/muranakajun/.ssh/config

中身はこう。

--------------

Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa #ここは秘密鍵を指定

--------------

 

さらに、秘密鍵ssh-agentに登録する。

$ ssh-add /Users/muranakajun/.ssh/id_rsa
Identity added: /Users/muranakajun/.ssh/id_rsa (/Users/muranakajun/.ssh/id_rsa)

※パス設定している場合は入れる必要あり。

 

これでひと通り終わったので、事後確認。

下記のように出ていれば接続完了や。

$ ssh -T git@github.com
Hi muranaka-jun-test! You've successfully authenticated, but GitHub does not provide shell access.

 

復習完了。アウトプット大事。

 

下記ページ参考にいたしました。ありがたや。

qiita.com

Mac ターミナルのプロンプト名変更をやった

今の状態が超かっこ悪い↓ なぜかアツシになってるし。

 

下記を参考。先日知りましたが、Qiitaって「キータ」って読むんですね。

ずっと「キュータ」って読んでた/// テヘペロ

 

macターミナル(黒画面)プロンプト名($手前の名前) 変更方法 - Qiita

 

かいつまんで書いていく。

 

Vimエディターで、/etcフォルダにある bashrc を編集

ここにある、PS1='\h:\W \u\$ ' を好きな形式に編集する。

 

設定ファイルいじるので、念のためバックアップを取る。

 

"時間 現在のディレクトリ"という形式が見えやすいかと思うので、

\t \w $ という内容に変更。

上記リンク先に色の変更方法も記載されていたのでそのままパクる。

 

PS1="\[\033[36m\]\t \w $ \[\033[0m\]"

 

 

んで保存しようとすると、「おいおい!これで読み取り専用だぜ!!」というエラーが出るので保存する時は以下をする。

 

:w !sudo tee %

→この後、パスワードを入れて :q! で閉じればおk。

 

ターミナルを再起動してみる。

 

成功!

 

ディレクトリ動いて、ちゃんと表示してくれた。

 

めでたしめでたし。

 

書いてて思ったけどスクリーンショットの倍率がそれぞれ違うので、

これ綺麗に見せる方法も探そ。