2021年8月2日 星期一

連線 AWS EC2 instance 的方法

先前調研過,最近也遇到有人提問,整理了一下連線 AWS EC2 instance 的方法。


方法一、SSH

將個人的 public key 放到 EC2 instance,就能用 private key 使用 SSH 方式登入。

因為不是為每個人建立 os user,無法得知誰登入,也不知道登入後的操作。 

 

方法二、Systems Manager 的 Session Manager

不需要 public/private key。透過 IAM 權限配置,授權使用者,登入方式有瀏覽器、AWS CLI、SSH 等,請參閱 AWS Document - AWS Systems Manager - Start a session

CloudTrail 可以知道誰登入,但不是為每個人建立 os user,不知道登入後的操作。


方法三、EC2 instance connect

EC2 instance 要安裝 Agent,透過 IAM 權限配置,登入方式為 SSH。

CloudTrail 可以知道誰登入,但不是為每個人建立 os user,不知道登入後的操作


方法四、SSH with IAM

將個人的 public key 放在 IAM,EC2 instance 安裝 validate credentials 的 scripts,登入方式為 SSH,請參閱 https://github.com/widdix/aws-ec2-ssh

CloudTrail 有記錄哪一台 EC2 instance 索取哪一位 IAM user 的 public key。有為每個人建立 os user,登入後的操作,可以透過作業系統的 audit log 查詢 (預設沒開啟,要記得開)

2021年3月25日 星期四

Firefox 的 bookmark 固定使用 container 開啟

繼上一篇 Firefox 解決 AWS Multi-Account 的困擾,要來解決另一個困擾:書籤如何固定使用 container 開啟。

AWS 帳號的登入連結,例如 https://myaccount1.signin.aws.amazon.com/console,如果有數個 AWS 帳號,使用書籤記錄這些連結,會很便利,但結合 container,每次都要先開啟 container 頁籤,再點選一次書籤,很不方便,於是有另外一個 Firefox Add-on 可以幫忙:Container Bookmarks


安裝與設定教學:

  1. https://addons.mozilla.org/zh-TW/firefox/addon/container-bookmarks/,點選 + 新增至 Firefox


  2. 在書籤上點選右鍵,在選單上點選 Edit Container Bookmark


  3. 彈跳出 Container Bookmarks 視窗後,在 Container 欄位選擇想把這個書籤開啟到哪個 container 頁籤。先複製藍底黑字內的連結,例如 http://www.demo-aws-account.container,將這個連接開啟在 container 頁籤內。點選 Done 結束編輯。



  4. 回到 container 頁籤,點選瀏覽器上方的工具列中 Multi-Account Containers,點選 Always Open This Site in...,選擇 container




  5. 如果開啟書籤時,有看到類似下面這張畫面,勾選 Remember my decision for this site,點選 Open in <container-name> Container

大功告成,之後從書籤就能直接開啟到指定的 container 頁籤中。

2021年3月24日 星期三

Firefox 解決 AWS Multi-Account 的困擾

擁有數個 AWS 帳號時,使用瀏覽器登入 AWS console,會因為現在登入的帳號,而踢掉其他已登入的帳號。為了解決這個問題,Firefox 有個很好用的 Add-ons 是 Firefox Multi-Account Containers,這個套件可以讓網頁有類似群組的功能,在這裡用 container 來描述,每個 container 共用 session,因此只要將不同的 AWS 帳號登入到不同的 container,就不會發生踢掉其他已登入的帳號,達到同時登入數個 AWS 帳號的目的。


安裝與設定教學:

  1. https://addons.mozilla.org/zh-TW/firefox/addon/multi-account-containers/,點選 + 新增至 Firefox


  2. 安裝後,可以在瀏覽器上方的工具列看到如中的圖示

  3. 點選後展開 menu,點選最下方的 Manage Containers


  4. 點選 + New Container


  5. 輸入自己喜歡的 container name,選擇識別用的 color 和 icon,按下 OK

  6. 在 container 清單內可以看到方才所建的 container,按下上方箭頭 <,回到上層後,就能點選 container 開啟新的頁籤


  7. 每個 container,都能有各自的 session,所以一個 container 就能用登入一個 AWS 帳號


2020年11月30日 星期一

Linux 切換 process 到背景執行

在 Linux,如果要同時跑多個指令,可以利用 nohup 將 process 放到背景執行

nohup /path/my_program &

預設執行結果存到 ./nohup.txt。


如果不想儲存執行結果

nohup /path/my_program >/dev/null &


也可以自訂儲存路徑

nohup /path/my_program >my_log.txt &


如果 standard error 也是輸出到畫面上,個別儲存的方式是

nohup /path/my_program >my.out 2>my.err & 


合併儲存的方式是 

nohup /path/my_program 2>&1 my_log.txt &


以上是 nohup 常用操作。


nohup 有個缺點是不能把背景執行切換到前景,這時就需要另一個工具:screen。 


首先,啟動 process

screen

 

接著執行你需要的指令,例如

tail -f /var/log/kernal.log


再來把 process 切換到背景執行,所要使用的是鍵盤快速鍵操作

Ctrl + A + D


你會回到執行 screen 前的 bash 環境,這時候 process 已經切換到背景執行,可以使用 ps 指令確認。 


process 切換到背景執行的好處是:可以登出,不怕斷線。


如果想要回到指令畫面,看執行結果,先找到 process ID

screen -ls

會得到類似的畫面

 There is a screen on:

        3449.pts-0.ip-10-44-204-199     (Detached)

1 Socket in /var/run/screen/S-ssm-user.

3449 就是 process ID

切換到前景執行的指令是

screen -r 3449


以上是 screen 常用操作。 

2020年10月26日 星期一

cURL 常用範例

印出 Header 和 Response

curl -i

印出 Handshake、Header 和 Response

curl -v

印出 Handshake 和 Header

curl -v -o /dev/null -s https://www.example.com/

指定域名解析成特定 IP Address

curl --resolve www.example.com:443:127.0.0.1 https://www.example.com/

設定 Header


curl -H 'User-Agent: Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)' https://www.example.com/

重新導向 301 或 302 頁面

curl -L https://www.example.com/

指定 HTTP 1.0

curl --http1.0 https://www.example.com/

指定 IPv6

curl -6 https://www.example.com/

2020年7月21日 星期二

Open Folder In VSCode on macOS

問題

想在 Finder 中,點選資料夾,從快捷選單中,以 VSCode 開啟資料夾。

解決辦法

使用 Automator 自己做一個。

1. 在「啟動台」搜尋「Automator」

2. 點選「檔案」->「新增」

3. 選擇「快速動作」,點選「選擇」

4. 右側欄位「工作流程接收目前的」選擇「檔案或檔案夾」,拖拉左側選單中「工具程式」的「執行 Shell 工序指令」至右側

5. 右側欄位「傳遞輸入」選擇「作為引數使用」,指令欄位填入「"/Applications/Visual Studio Code.app/Contents/MacOS/Electron" "$@"」

6. 「檔案」->「儲存」

7. 將快速動作儲存為「Open VSCode」,點選「儲存」

8. 開啟 Finder,選擇一個資料夾,開啟快捷選單,可以在選單內看到「Open VSCode」項目

2020年5月19日 星期二

Git - Merge/Pull Request 重新 rebase

程式開始撰寫前,先從 develop branch 分支出 feature 分支
$git checkout -b feature/demo origin/develop

撰寫完程式,push commit 前,可以先合併遠端分支,確保程式同步
$git fetch --all 
$git pull --rebase origin develop

透過 GitLab 或 GitHub 網頁,發送 Merge/Pull request
$git push -u origin feature/demo

如果發送 request 後,因為某些因素,分支需要再同步一次,此時需要強制覆蓋遠端分支
$git fetch --all 
$git pull --rebase origin develop 
$git push -f origin feature/demo