about 1 year ago

Eason's blog搬家囉!

新網址在這兒:https://easonchang.com/
新網址在這兒:https://easonchang.com/
新網址在這兒:https://easonchang.com/

很重要所以講三次
這邊未來就不會再更新了,請移駕到全新Eason's blog唷!
感謝您的支持!

 
about 1 year ago

文章搬家囉!新文章在這裡:https://easonchang.com/2016/08/22/dream-diary-13-before-final-exam/

-2016.08.22-

教官又在恐嚇我們了,我們所有人只能一次過關!不準補考QQ

今日課程為「VOR」以及「航空生理學」,真夠嗆的。

VOR

VHF Omni-directional Range (VOR),中文為「特高頻全向信標定位台」。你可以把它想像成固定在地面上的基地台,他會向空中發射360度雷達波,天上的飛機接收到了,就可以知道自己正在VOR站的哪個方位,可以用於定位。

但我們會使用到VOR的機率應該不大,畢竟我們是VFR(目視飛行),迷航了看窗外就好,而且台東花蓮也才多大,根本不需要動用到VOR,所以今天也只介紹了些基本操作。但若將來要進階到IFR(儀器飛行)的話,VOR就很重要了,所以這部分的知識可說是初窺IFR的門徑。

航空生理學

駕駛飛機的是人,所以除了瞭解飛機,也要研究人體,知道人體在什麼狀況下會出問題,並學會如何應對,也是維護飛航安全很重要的環節之一。

這部分提到了視覺、空間迷航、壓力控管、和酒精。

before 期末考

這個週末又沒唸到多少書,真是超糟糕的,臨時抱佛腳的習慣已經根深蒂固了,實在很難避免,而偏偏每次抱佛腳都給我成功,真令人不知該如何是好XD

最近我在想,到底什麼才是我應該留給大家的?有時候真的會感覺來這兒聽一聽課就沒了,好像沒啥意義,有時候也會感覺到我的心根本不在這上面,寫程式和研究blog比念這山高的書有趣多了,如此想法好像好像很對不起無法來參加計畫的夥伴們,但有時真的會這麼想,到底我們這一遭的意義何在呢?

好像每次大考前、遭遇重大壓力時,都會不自覺地想要審視自己的初衷,但偏偏此時又沒有時間讓我們靜下心來思考,所以就不知為何而戰地上了戰場,結束後就開始耍廢人生,也沒回頭繼續思考,就迎來了下一個挑戰,如此循環不已,一路走到了現在......。

但不管怎樣,明天終究是要面對考試的,思考人生什麼的就先擱一邊吧!我還有大半本的法規、氣象解碼符號表、及兩張練習卷尚未檢討呢!就讓我先去努力一陣吧!

目標永遠是一次過關!讓後天的松山機場塔台行可以全心全意地進行玩耍交流!

 
about 1 year ago

文章搬家囉!新文章在這裡:https://easonchang.com/2016/08/19/dream-diary-12-law/

-2016.08.19-

天曉得為何課程編排如此殘忍,好像把所有背誦量大的章節,全排在了同一週,真希望我有記憶吐司可以用T_T

飛航法規

今天我們上法規。這東西其實沒啥好講的,就是一本200多頁的東西要背而已,沒啥!

法規基本上也包含了所有我們以前學過的東西,它只是把它們規範了起來。以下列舉幾條:

  • 航空器的定義
  • 考執照規範
  • 飛機多久要安檢一次
  • 台灣的空域限制條件
  • 目視飛航最低所需配備
  • 族繁不及備載......

除了恐怖的法規外,教官今天也教了Aeronautical Decision-Making

飛行員決策 Aeronautical Decision-Making

有人說「飛機是最安全的交通工具,事故發生機率低,不過一旦發生了後果就會相當嚴重。」

為什麼我們需要啃這麼多書?全是為了避免意外。只要我們多學一種例外狀況的應對方式,就多一分飛航安全性,啃這些書應該本著「學習例外處理方法」的心態來讀。

但教官也常打趣地說:「上飛機了智商就會少一半」,所以「飛行員決策 Aeronautical Decision-Making」就是一套避免降低智商的決策理論。

基礎的立論模型是瑞士乳酪理論,也就是空難的發生是一連串錯誤同時發生所導致的,所以我們只要設法識別出其中任何一層錯誤,並做出正確的應對,就能避免大災難了!

通勤中的小樂趣

我是每天通勤往返台北、宜蘭在上課的,而每天通勤都會經過兩回松山機場。

平常我對它沒啥感覺,但因為參與了這次計劃,學了點東西,所以我開始對飛機和機場有了不同的認知。最近開始只要經過松山都會轉頭盯著它瞧,看看今天停了幾架飛機和直升機、機場裡頭有幾條滑行道、塔台在哪個方位、地面有什麼標誌,開始慢慢成為了一位業餘航空迷了。

而自從前幾天上過機場的課程後,就開始能注意到更多細節了。其中比較特別是機場標示燈,松山是軍民合用機場,機場標示燈是白綠交替閃爍的,只要到了晚上它就會被開啟,告訴飛行員這裡有機場。平常回家時間不算太晚,所以一直找不到它,今天晚上自習完搭車時,終於被我給找到了。

它在機場的另一頭,閃爍速率比想像中的慢,而且超暗的,光線都被旁邊的照明燈蓋過去了,實在是挺不好找的,不過找到了還是令人挺興奮的。

(左上角的紅圈處就是機場警示燈,由於手上沒有晚上的照片,根據我的記憶應該是那顆東西沒錯,反正我想表達的意思就是他真的很難找)

 
about 1 year ago

文章搬家囉!新文章在這裡:https://easonchang.com/2016/08/16/start-your-rails-project-with-production-mode/

Quick Reference:

$ RAILS_ENV=production rake db:migrate
$ rake secret //產生secret key
$ export SECRET_KEY_BASE=[貼入上個指令產生出來的密鑰]
$ vim config/initializers/assets.rb  //加入用到的assets路徑
接著確認各處引用assets的方法正確
$ RAILS_ENV=production rake assets:precompile
$ vim config/environments/production.rb  //將這行改成true: config.serve_static_assets = true
$ rails s -e production

什麼是production模式?為什麼要用它?

在通常情況下,直接在你的專案裡下$ rails s這條指令,我們是使用development mode來啟動你的專案

在development模式下,大部分的修改都會直接顯現在網頁上,方便開發

但實際讓系統上線,我們不會使用development模式,而是production模式

在production模式裡,rails會將assets預編譯在一起(pre-compile),並放在public/資料夾底下以供存取,這能增進網站效能

使用production mode啟動rails專案

0.migrate你的資料庫

production mode和development mode的資料庫是分開的,所以你需要再migrate一次

$ RAILS_ENV=production rake db:migrate

1.修改config/secret.yml,設定production mode的secret_key_base

要順利運行rails程式,你需要設定一個叫secret_key_base的東西,它是rails用來認證瀏覽器cookie的一串密鑰。rails已經幫你在development mode和test mode設定好了,但production mode沒有,你得自己來,它的設定在config/secret.yml這隻檔案,讓我們來看看它:

secret.yml
// development mode的設定
// 它使用 b1f4eb...3a9 這串密鑰(隨機生成的)
development:
  secret_key_base: b1f4eb6c1d97f627fbc0a3919fc27ab5f831200cdd0ea72317f404a2b9d878192bca27d92380f56051c60d0a364c86fe53d9b9866d487a17cf06582a783723a9

// test mode使用 fe9d...c3b 這串密鑰
test:
  secret_key_base: fe9d49b7edc8e3a4dfa47c0682974aca4572388e929ea3e4f037b3e8841747fc3029e030bbd102a62d372596b4d753dd0c419b7425a8dcceca3817cf7d5dbc3b

// production mode從執行環境裡抓 $SECRET_KEY_BASE 這個環境變數當作密鑰,但正常情況下該變數並不存在,所以出錯
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

你有兩種方法能設定production mode的secret_key_base

(1)比較簡易的做法是直接寫死一串固定的密鑰給它:

secret.yml
// 前略...

production:
// 刪掉原本的 <%= ... %> ,替換成隨便一串長度30以上的英數組合字串給他當密鑰
 secret_key_base: iameasonchangiamhandsomeiamthekingoftheworldnoonecandefeatmeiwantagirlfriendiamaloserqq

(2)更安全的做法是把密鑰設在執行環境中:

$ rake secret // 生成一串密鑰,顯示在終端機上
$ export SECRET_KEY_BASE=[此處貼上你剛剛產生的密鑰] // 把密鑰設定至環境變數 $SECRET_KEY_BASE

但只做到這樣的話,重開終端機的話環境變數設定就消失了,所以可以把設定寫進環境設定檔裡頭

像我使用zsh的話,環境設定檔是~/.zshrc
而Mac的terminal預設的bash,則是~/.bash_profile

.zshrc
// 在.zshrc中插入下面這行
export SECRET_KEY_BASE=[此處貼上你剛剛產生的密鑰]

到此你應該可以無錯誤地使用production mode開啟你的rails專案了,你可以下$ rails s -e production來開啟伺服器,並且用瀏覽器連至localhost:3000查看目前的結果

你的畫面應該跟我很像,怎麼醜不拉幾的?我不眠不休設計出來的精美網頁呢?

(範例的網站係由交大學聯會資訊部 & NCTU+製作的2016交大網路新生包

那是因為你還沒有告訴rails你用到了哪些設計元素,接下來的步驟教你怎麼做:

2.告訴rails你有哪些assets需要被pre-compile

前面我們提過,使用production mode的理由是增進網頁讀取效能,方法是預編譯(pre-compile)各類assets,而你需要手動告訴rails你有哪些assets需要預編譯,除了圖檔,所有使用到的assets都需要加入裡頭,如js、css檔

方法是更新config/initializers/assets.rb這隻檔案,加入你有使用到的assets的路徑:

assets.rb
// 前略...
// 後面加入這一行,裡頭放入你要precompile的檔案
Rails.application.config.assets.precompile += [
  'bootstrap.js',        // 請幫我compile vendor/assets/javascripts/bootstrap.js 這支檔案
  'courses/content.js',  //              app/assets/javascripts/courses/content.js
  'courses/chart.js',    //              app/assets/javascripts/courses/chart.js 
  'new-index.css',       // css檔        app/assets/stylesheets/new-index.css.scss
  'login.css',           // erb檔        app/assets/stylesheets/login.css.erb
  'newcomer/*.css',      // 資料夾裡全部   app/assets/stylesheets/newcomer/*
  'NotoSans-Regular-ttf' // 字形檔        app/assets/fonts/NotoSans-Regular-ttf
]

rails會去 app/assets/vendor/assets/ 這兩個資料夾去找你的assets檔案,並且會根據副檔名尋找對應的路徑:

  • js檔會去找底下的 javascripts/
  • css檔會去找底下的 stylesheets/
  • font檔會去找底下的 fonts/
  • image檔會去找底下的 images/

但rails預設會幫你compile所有的圖檔,所以.png、.jpg等圖檔就不用加進去

3.確認你引入assets的方法有沒有誤

compile後的assets,檔名會改變,所以傳統引入assets的方法會失效,必須改用rails提供的方法

  • 引入js檔使用 <%= javascript_include_tag 'your-js-path' %>
  • 引入css檔使用 <%= stylesheet_link_tag 'your-css-path' %>
  • 引入圖檔使用 <%= image_tag 'your-image-path' %>
  • js檔裡要再引入asset請使用 <%= asset_path('your-img-path') %>

4.Pre-compile it!

在你的專案目錄裡下指令:

$ RAILS_ENV=production rake assets:precompile

就會將assets pre-compile進/public/assets裡頭

5.修改production的模式設定

雖然compile了,但production模式預設是不會讓使用者讀取/public/assets的檔案

必須修改 config/environments/production.rb 這個檔案

將位在第24行左右的

production.rb
config.serve_static_assets = false

改為 true:

production.rb
config.serve_static_assets = true

6.使用production mode啟動吧!!

在專案的目錄裡下指令:

$ rails s -e production

就可以使用production mode開啟你的rails專案啦!

使用瀏覽器連入localhost:3000,就可以看到你速度大幅提升的美麗網頁啦!

(範例的網站係由交大學聯會資訊部 & NCTU+製作的2016交大網路新生包


測試環境:

  • OS: Mac OS X
  • Rails version: 4.2.6
  • Ruby version: 2.0.0p481
  • Shell: zsh
 
about 1 year ago

文章搬家囉!新文章在這裡:https://easonchang.com/2016/08/18/dream-diary-11-flight-plan/

-2016.08.18-

今天的課程是「飛行計劃書撰寫」!我們所謂的大魔王課程!

飛行計劃書

每趟飛行前,飛行員都需要事先規劃各項飛行細節,並寫入飛行計劃哩,然後上交民航局查核。

這個章節可以說是綜合從8/1到現在所有的課程內容的總集篇!

那麼要怎麼撰寫飛行計畫呢?下面列出一些基本步驟:(這兒我不打算細講,一樣有興趣再談!)

  1. 查航圖,規劃飛行路徑
  2. 根據航圖上的顯著地標決定數個Checkpoint,避免迷航
  3. 使用航空尺量出航向(True Course),之後的步驟會用到
  4. 根據地勢、空域條件、氣象預報的高空風,決定巡航高度
  5. 查飛機AFM的巡航表現表,決定你要使用的引擎設定,並得出油耗、航速等各項飛機表現
  6. 輪到flight computer出場了!使用它算出ground speed、耗油量、飛行時間等其他各項關鍵數值......。
  7. 最後把所有東西寫進飛行計劃

你瞧,之前所學的氣象、飛機構造、機場、航圖、平衡性等內容全都用在裡頭了!不負其大魔王盛名。

雖然這邊內容很雜、很亂、很綜合、很繽紛,但我覺得超有趣的。相較於純粹記憶的內容,這邊好玩多了。也許是因為教官講課速度較慢、吸收比較紮實、成就感也高;或者是因為這兒有大量實作部分,可以動手兼動腦;或是純粹因為昨天睡飽飽所以今天精神好,總之我覺得今天的吸收程度頗高!要持續保持到期末考啊!!!!

 
about 1 year ago

文章搬家囉!新文章在這裡:https://easonchang.com/2016/08/17/dream-diary-10-flight-computer/

-2016.08.17-

我們終於開始使用到一些道具了!今天的課程為「航圖判讀」、以及「Flight Computer的操作」。

航圖

旅遊看景點地圖、登山靠登山地圖、開車查街道地圖、走路有Google map,而「航圖」就是我們飛行員所使用的地圖。

下面這就是一份航圖:

資料來源:SkyVector https://skyvector.com/

上頭密密麻麻標示著各種圖示:

  • 機場的位置、跑道數量與方位、塔台使用的頻率
  • 空域的分佈、高度條件
  • 定位用的VOR及NDB的位置、及其頻率
  • 海陸分佈、障礙高點的高度
  • 方位校正用的磁偏角

我們需要學會判讀航圖,才知道哪邊可以飛哪邊不能飛。總之這又是另一坨需要背誦的玩意兒,且份量不亞於前天的氣象解碼,期末考真不能再小瞧它了!

這是我們今天用到的第一個小道具:航圖,另一個則是Flight Computer。

Flight Computer

(image from Wikipedia under CC BY-SA 3.0. The original uploader was Cosmicship at English Wikipedia - Photographed and composited by Dave Faige (cosmicship) for Wikipedia.)

Flight Computer是飛行員的神器!直接取代計算機和單位轉換器!一支在手,不用任何心算能力,直接轉轉轉就能計算出一切飛行所需資訊!如此神器,一張國父還有剩!搶先預購請打0800-000-987!

Flight Computer能做的計算有(目前我們學到的):

  • 航速、距離、飛行時間互相計算
  • 油耗、油量、飛行時間互相計算
  • 英哩(Statute Mile)和海哩(Nautical Mile)轉換
  • 校正航速(Calibrated AirSpeed)和真航速(True AirSpeed)計算
  • 風修角(Wind Correction Angle)計算
  • 地面航速(Ground Speed)計算

例如只要知道飛行速度和距離,不需任何計算,只要轉轉轉,三秒鐘就可以知道何時會抵達,如此神器我琢磨了許久還是摸不清它的原理,太驚人了!

近期狀況

「歷史送給人類的唯一教訓就是人永遠學不會教訓」

我又連續好多天熬夜了,也不知道在幹啥,反正就是習慣性晚睡,所以今天上課精神一樣差到極點。

為了彌補進度,今天也再次留在教室晚自習了,完成了兩張練習卷,還算小有進展,真的不能再荒廢下去了!

 
about 1 year ago

文章搬家囉!新文章在這裡:https://easonchang.com/2016/08/15/dream-diary-09-fxxking-meteorology/

-2016.08.15-

教官曾預言「期中考只是小菜一碟,過關是剛好,等到期末考,有沒有讀書很明顯。」

現在看起來這預言實在太貼切了!

氣象學

課程進度來到了「氣象學」以及「天氣解碼」。每一位飛行員都希望能夠飛在無風無雨無雲無霧、而且是標準溫壓的天氣底下,但事實是你能中樂透也不一定能遇到這麼優的天氣,所以我們得學習氣象知識。

前半部「氣象學」,簡單!小兒科嘛!這不就高中地球科學課程的東西嘛?什麼冷鋒暖鋒滯留鋒、山風谷風海風陸風、行星風系圖、柯氏力,這些考學測時早啃過了,沒啥!

但後半部的「天氣解碼」,完啦!

天氣解碼

天氣解碼就是各機場的氣象台每半小時會發布即時氣象資訊,我們稱為METAR,而大約每日會發布整天的氣象預報,我們叫它TAF。我們飛行員得讀懂它,才知道啥時能飛、啥時該待在FBO躲雨。

METAR

下面這張圖就是一份METAR(唸作「咪塔」),這是我在撰文當下,台東豐年機場的天氣。

有時候我們只看得到右下角的這串咒語

METAR RCFN 260830Z 13004KT 050V190 9999 FEW035 BKN300 32/25 Q1004 NOSIG RMK A2965=

而我們就要有能力把它轉換成上圖的風向、風速、能見度等資訊,由此來判斷能不能飛。

至於怎麼轉換呢?我們先來看看下面這張精美的符號對照表~

METAR/TAF Abbreviations: http://www.moratech.com/aviation/metaf-abbrev.html

把它背起來吧!如果還有興趣我們再談!(可憐的咱們得全背啊T_T)

TAF

METAR是機場的即時天氣狀況,而未來的預報則要看TAF(唸作「踏斧」)了。

以下是一份TAF,也是一串咒語:

TAF RCFN 271100Z 2712/2812 34005KT 9999 FEW015 BKN032
BECMG 2800/2802 15005KT
TEMPO 2806/2812 18010KT 4000 SHRA SCT007 FEW012CB BKN016
BKN035=

這就沒有這麼方便的編譯結果可以直接看了。而考量到一個字一個字解釋的話文章會太長就沒人看了,一樣我們有興趣再談!

回家小任務

雖然整份符號總表是如此的驚人,但某些極端天氣也許我們終其一生也不會碰到,可略過不學。例如火山灰(Volcano Ash),符號簡寫為VA,台灣也就這麼小,若真出現了火山灰,即使不看METAR/TAF,轉轉電視應該是早就會知道了。

學這類東西終究是要用在現實裡頭,所以今天教官給我們出了個回家任務:

今晚九點!去查松山機場和高雄機場的METAR和TAF,解碼後明早兒帶來!

做中學嘛!非常好!要是回家後能有精神解它就好了!

 
about 1 year ago

文章搬家囉!新文章在這裡:https://easonchang.com/2016/08/10/dream-diary-08-mid-exam/

-2016.08.10-

期中考!

我完全搞錯了,這大夢計畫根本不好玩,這根本就是一場專注力的試煉。

昨晚發生了什麼事

昨晚我睡著了,我本來希望回家後能把我欠的那四張還沒寫、還沒檢討的練習卷補完,可是我又再一次輸給我自己了,我睡著了!而且是一夜好眠的一覺到天亮!媽呀!昨天不是說好了絕對要一次通過期中考嗎?怎麼現在搞成這副德性?

眼下實在是無望了,這樣幾乎就是裸考嘛!怎麼可能會有好結果?但是怎麼辦?今天考不過明天還是得考過啊!就把今天的期中考當成是練習嗎?但是我無法確保我回家就一定會再把所有重點讀完,萬一我今晚又睡著了呢?這樣......真的會很糟糕耶......。

我做了什麼

所以我確定了,我能把握的只有眼下的時光,只有現在!現在是早上七點,距離九點半考試還有兩個多鐘頭,這應該夠我做些什麼,我絕對得好好善用這兩個多鐘頭!即使無法在等會兒的考試裡派上用場,就當作是為了明天的第二場測驗做準備,我也要好好給他拼一把!

所以我就開始拼命複習啦!一個小時的客運車程,我在車上以前所未有的速度寫完了比較重要的兩張練習卷,檢討了一張尚未檢討了練習卷,再之後半小時的捷運時光,我以飛快的速度複習了尚未完全理解的重點,最後到教室時,發現教官多給了我們30分鐘的複習時間,這對於現在的我來說真的有如神助!於是我把最後一張練習卷也飛快地寫完了。

結果怎麼樣

然後終於迎來了期中考!其中考試50題選擇題,每題2分滿分100分,80分就算過關,今天我們就會立刻知道結果。

結果你猜怎麼著?當然是通關啦!今早的惡補的4張練習卷極大程度地發揮了效果,好幾題類似觀念的題目在期中考卷裡又再出現了!我怎麼可能會再怕它們呢?

儘管如此,我還是錯了幾題,幾個細節我還是沒有搞懂,於是下午的檢討時間,大家檢討了所有寫錯的題目,釐清了不少似懂非懂的概念,可喜可賀可喜可賀!

哈哈,聰明如我怎麼可能在這種地方摔跤呢?我要來去享受假期啦!我弟還在等著我陪他玩minecraft呢(阿不是,要複習!複習!)

 
over 1 year ago

文章搬家囉!新文章在這裡:https://easonchang.com/2016/08/09/dream-diary-07-before-mid-exam/

-2016.08.09-

期中考將至!!!

明天!就是期中考了!究竟我們這兩週的投入到底有多少實質收穫?明天就將見真章!

學校排了兩天的期中考時間,明天早上考試,下午立即檢討。而如果沒有通過,後天還可以再補考一次。換言之,只要明天一次通過考試,就可以獲得後天一整天的榮譽假!這對於現在緊繃的我們,吸引力可大了!

我無論如何都要一次通過考試!絕對不能讓「只有自己一個人沒有通過考試,於是禮拜四和教官一對一乾瞪眼一整天」這種事情發生!我們都努力這麼久了星期四讓我放一天假待在家裡耍廢也是應得的吧~(你覺得這想法很消極嗎?不不不,這當然是開玩笑而已,為自己設定高標準當然是為了幫教官爭取榮耀啊!絕對不是為了可以爽爽放假一天才讀書的!放假是為了得到更多緩衝時間來紮實地複習這兩週教的東西!)

今天的課程

今天我們繼續把第十章走完了,又做了不少道計算題。我們學會了依據溫度、壓力、機場條件等各式各樣的因素,計算此次飛行將會消耗的油耗、起飛所需距離、最佳巡航速度、爬升所需時間。這些內容都會在我們將來撰寫飛行計劃(flight plan)時派上用場。

飛行員能力門檻

目前為止的課程都沒有使用到太深入的數學技巧,頂多就是查表找不到你要的條件時會使用到「插值法」,其他都是很基本的加減乘除。所以目前看來,飛行員的數學能力門檻不高,我們不是飛機設計師,不需要懂太多計算原理,只要會使用各種輔助工具(查表、尺規、flight computer)求得必要資訊即可。

飛行員最需要的是「英文能力」。教科書是英文、航圖上標示的是英文、和塔台溝通是英文、飛機操縱手冊也是英文,所有一切都是英文,門檻不低。

但其實重點在於,航空英文和日常英文還是有相當大的落差,航空英文專有名詞非常多,而且能縮寫的全部都是縮寫。指示風速Indicated Air Speed縮寫成IAS、陣雨Shower Rain代號SHRA、真航向True Course簡寫成TC......,第一次看到時永遠會疑惑這個縮寫到底代表什麼,只能有不斷使用才有辦法把它們背起來。

 
over 1 year ago

文章搬家囉!新文章在這裡:https://easonchang.com/2016/08/18/using-ssh-with-putty-key-on-macos/

Quick Reference:

$ brew install putty #安裝puttygen套件

$ puttygen <your-putty-key.ppk> -O private-openssh -o <your-ssh-key.pem> #將putty key轉換成ssh key

$ chmod 400 <your-ssh-key.pem> #調整.pem權限

$ ssh -i <your-ssh-key.pem> <user@your.server.com> #使用.pem進行ssh連線

突然發現學程的網站有小bug,所以需要連上網站所在的AWS(Amazon Web Service)伺服器裡修改程式碼。但建置網站的學長只留下了一個.ppk的putty專用SSH認證檔,而我這台破Mac實在沒容量給我再灌一台Windows然後裝上Putty來連線,所以我就開始研究如何讓MacOS內建的ssh指令也能吃進這支.ppk的putty key認證檔。

以下是我找到的解法:

1.使用puttygen將putty key轉換成ssh可用的key

ssh指令無法接受.ppk的putty key,必須先轉換成ssh可以使用的key

puttygen這支程式可以幫你轉換,你可以使用Homebrew來安裝它:

$ brew install putty

接著可以輸入下面這條指令,將putty key轉換成ssh key:

$ puttygen <your-putty-key.ppk> -O private-openssh -o <your-ssh-key.pem>

2.為ssh key設定適當的存取權限

如果你的ssh key檔的權限太過開放,伺服器會阻擋你使用這支key來連線,所以你必須為它設定適當的權限(有時候不需要設定權限就是對的了):

$ chmod 400 <your-ssh-key.pem>

3.連線

接著你可以用它來進行連線啦!

$ ssh -i <your-ssh-key.pem> <user@your.server.com>

Reference: https://stackoverflow.com/questions/3475069/use-ppk-file-in-mac-terminal-to-connect-to-remote-connection-over-ssh