修正NetBeans中SFTP出現的錯誤「Algorithm negotiation fail」:更新com-jcraft-jsch.jar / How to fix NetBenas’s SSH problem “Cannot connect to server … Algorithm negotiation fail”: Update com-jcraft-jsch.jar
今天使用NetBeans的時候,發現它內建的SFTP上傳檔案功能失效無法運作了。查了一下StackOverflow上的解答,赫然發現是NetBeans使用的JSch函式庫版本過舊,導致無法正常使用。這篇將說明如何更新NetBeans的JSch函式庫,讓NetBeans的SFTP功能能夠正常運作。
在NetBeans中使用SFTP / SFTP in NetBeans
在NetBeans中,如果建立PHP應用專案(PHP Application Project)的話,就可以使用NetBeans內建的檔案上傳功能。
檔案上傳功能在專案的Properties裡面。
Run Configuration裡面的Remote Connection,按Manage…進去設定遠端伺服器。
先從左下角的Add…新增伺服器。
選擇SFTP,既是使用SSH連線。
再來設定伺服器的連線方式,包括Host Name、User Name、Password跟Initial Directory。
然後是儲存連線金鑰,要在Known Hosts File指定一個空白的純文字檔案後,按下Text connection儲存金鑰。詳細做法請看「NetBeans儲存RSA key fingerprint」這篇。
問題敘述 / Problem
你在按下「Test Connection」的時候,一般應該要看到下面的訊息:
如果連線成功,會看到這個訊息:「Connection succeeded」。
但如果看到「Cannot connect to server … (Cause: Algorithm negotiation fail)」,那就表示你遇到這篇所講的SSH問題了。
這是因為NetBeans使用的SFTP函式庫JSch未增加新版本的SSH功能,所以導致無法連線到較新版本的伺服器上。因此,我們得要想辦法更新NetBeans的JSch函式庫才行。
解決方法 / Solution
首先,我們要先去JCraft下載JSch函式庫:
下載「jsch-0.x.xx.jar」,我們要jar檔的版本。
請把下載下來的.jar檔案改名為「com-jcraft-jsch.jar」
然後把這個檔案複製到NetBeans安裝資料夾中ide中的modules檔案裡面。這個路徑可能會隨著你安裝NetBeans的位置跟版本而有所不同,例如:
- C:\Program Files\NetBeans 8.0\ide\modules
最後重新啟動NetBeans。
這樣就可以正常連線了。