用指定的 SSH key 來操作 git

一般來說,都是直接使用 $HOME/.ssh 下這把預設產生的 id_rsa/id_rsa.pub 。那如果要使用另外的 SSH key 該怎麼辦呢?

這時候可以使用 GIT_SSH 這個環境變數搭配自訂的腳本來做:

  1. 先新增一個 custom_ssh.sh:
    #!/bin/sh
    exec /usr/bin/ssh -o StrictHostKeyChecking=no -i /home/me/my_private_key "$@"
    
  2. 在使用 git 的時候,提供 GIT_SSH 環境變數
    GIT_SSH="custom_ssh.sh" git clone your_repository

    ,這樣就可以了。

在什麼情況會用到額外的 SSH key 呢? 最常見的例子就是佈署:在 gitlab/github 裡可以有所謂的 deploy key,這樣在佈署的時候,就可以不提供自己的 SSH key 來做佈署,只透過這把 deploy key 來取得原始碼,增加安全性。

誰有用到 GIT_SSH ?

  1. Jenkins 裡可以新增 SSH key ,讓你在存取 repository 時,使用這把 SSH key。實際上 Jenkins 內部也是利用 GIT_SSH 的方法在運作,但並不是全部。
  2. Ansible 的 git module 也使用了 GIT_SSH 這個技巧 (應該是)。

也可以使用 ssh-add 搭配 ssh-agent 來替代 GIT_SSH 的作法,這樣就可以不需要額外新增一個自訂的腳本了。

產生獨立 SSH Key 的方法:

ssh-keygen -C your_comment -b 4096 -m pem -f key_filename -q -P "" -N "" 

執行上面的指令後,會產生兩個檔案,一個是公鑰,一個是私鑰。在要複製到別的地方使用時,要注意 permission 必須是 0600,僅允許擁有者存取才行。

參考自:Git clone with custom SSH using GIT_SSH error – Stack Overflow

awscwxls – 將 CloudWatch 數據匯出為 xls/xlsx

有人把程式寫好了,所以拿來用就可以:Exporting AWS CloudWatch Data | Pete Zybrick

  1. 確定有設定好 $HOME/.aws 目錄下的檔案。
  2. petezybrick/awscwxls: AWS Cloudwatch to Spreadsheet 上 git clone 下來
  3. 到 run 目錄下,先複製 properties/first.properties 為一個新的檔案,例如 properties/example.properties。然後修改內容,awscwxls 會讀取這個檔案的內容當作參數,像是要拿哪些數據、取哪些 instance、起始時間、區域等等的,都是在這邊設定。時間是用當地時間,程式會自動轉換為 UTC 時間 (AWS 上的時間)。
  4. 執行 ./runcwxls (Windows 下是 runcwxls.cmd) ,runcwxls 就會把取得的數據存到 xlsx 裡去了。