避免直接 pipe 進 shell...

Don't Pipe to your Shell」這篇文章給了一些有趣的例子。

很多工具都提供 pipe to shell 的方式安裝,像是這樣的形式:

wget -O - http://example.com/install.sh | sudo sh

先不管「應該用 HTTPS 以確保內容不會被改」的問題,如果 wget 傳到一半斷掉會發生什麼事情呢?像是作者給的例子:

TMP=/tmp
TMP_DIR=`mktemp`
rm -rf $TMP_DIR

如果傳到最後一行的 rm -rf $TMP 就斷掉 (後面的 _DIR 斷掉) 會發生什麼事情呢?XDDD

如果 shell 是這樣寫呢:

rm -rf /tmp/$TMP_DIR

然後傳到 rm -rf / 就斷線... XD

所以還是先抓下來再執行吧,可以避免意外發生 :p

把 PEM Private Key 檔轉成 SSH Public Key 格式...

RSA 中,單獨靠 Private Key 是無法算出 Public Key 的,不過在 PEM 檔裡因為都有紀錄,所以可以取出:

openssl rsa -in aws.pem -pubout

不過取出的格式需要再轉一次讓 OpenSSH 可以吃:(參考「Convert pem key to ssh-rsa format」這篇的方法)

ssh-keygen -f aws.pub -i -m PKCS8

雖然 ssh-keygen 不接受 - 當 stdin,但可以利用 /dev/stdin 直接串起來:

openssl rsa -in aws.pem -pubout | ssh-keygen -f /dev/stdin -i -m PKCS8