:::

修正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

image

今天使用NetBeans的時候,發現它內建的SFTP上傳檔案功能失效無法運作了。查了一下StackOverflow上的解答,赫然發現是NetBeans使用的JSch函式庫版本過舊,導致無法正常使用。這篇將說明如何更新NetBeans的JSch函式庫,讓NetBeans的SFTP功能能夠正常運作。


在NetBeans中使用SFTP / SFTP in NetBeans

2017-07-25_154751

在NetBeans中,如果建立PHP應用專案(PHP Application Project)的話,就可以使用NetBeans內建的檔案上傳功能。

image

檔案上傳功能在專案的Properties裡面。

image

Run Configuration裡面的Remote Connection,按Manage…進去設定遠端伺服器。

image

先從左下角的Add…新增伺服器。

image

選擇SFTP,既是使用SSH連線。

image

再來設定伺服器的連線方式,包括Host Name、User Name、Password跟Initial Directory。

image

然後是儲存連線金鑰,要在Known Hosts File指定一個空白的純文字檔案後,按下Text connection儲存金鑰。詳細做法請看「NetBeans儲存RSA key fingerprint」這篇。

問題敘述 / Problem

你在按下「Test Connection」的時候,一般應該要看到下面的訊息:

image

如果連線成功,會看到這個訊息:「Connection succeeded」。

2017-07-25_152407

但如果看到「Cannot connect to server … (Cause: Algorithm negotiation fail)」,那就表示你遇到這篇所講的SSH問題了。

這是因為NetBeans使用的SFTP函式庫JSch未增加新版本的SSH功能,所以導致無法連線到較新版本的伺服器上。因此,我們得要想辦法更新NetBeans的JSch函式庫才行。


解決方法 / Solution

首先,我們要先去JCraft下載JSch函式庫:

image

下載「jsch-0.x.xx.jar」,我們要jar檔的版本。

imageimage

請把下載下來的.jar檔案改名為「com-jcraft-jsch.jar」

image

然後把這個檔案複製到NetBeans安裝資料夾中ide中的modules檔案裡面。這個路徑可能會隨著你安裝NetBeans的位置跟版本而有所不同,例如:

  • C:\Program Files\NetBeans 8.0\ide\modules

最後重新啟動NetBeans。

image

這樣就可以正常連線了。