1. 程式人生 > >JSch登入sftp,跳過 Kerberos username 身份驗證提示

JSch登入sftp,跳過 Kerberos username 身份驗證提示

一般情況下,我們登入sftp伺服器,使用者名稱認證或者金鑰認證即可。
但是如果對方伺服器設定了Kerberos 身份驗證,而已方又沒有對應的配置時,則會提示輸入
Kerberos username [xxx]
Kerberos password

此時,簡單的解決辦法是,可以去掉Kerberos 身份驗證來解決

解決辦法
session.setConfig(“PreferredAuthentications”, “publickey,keyboard-interactive,password”);
或者
config.put(“PreferredAuthentications”,”publickey,keyboard-interactive,password”);
session.setConfig(config);

以上是通過設定常見的三種認證協議方式,來忽略其他方式
PreferredAuthentications裡面preferred的英文註解:
adj. 首選的;
v. 提出(請求、控訴等)( prefer的過去式和過去分詞 ); 提升; 建議; 選擇某事物(而不選擇他事物);

(1)publickey:基於公共金鑰的安全驗證方式(public key authentication method),通過生成一組金鑰(public key/private key)來實現使用者的登入驗證。
(2)keyboard-interactive:基於鍵盤互動的驗證方式(keyboard interactive authentication method),通過伺服器向客戶端傳送提示資訊,然後由客戶端根據相應的資訊通過手工輸入的方式發還給伺服器端。
(3)password:基於口令的驗證方式(password authentication method),通過輸入使用者名稱和密碼的方式進行遠端機器的登入驗證。

關於:Kerberos
Kerberos:
Kerberos認證協議
Kerberos是一種網路認證協議,其設計目標是通過金鑰系統為客戶機 / 伺服器應用程式提供強大的認證服務。
使用Kerberos時,一個客戶端需要經過三個步驟來獲取服務:

認證:客戶端向認證伺服器傳送一條報文,並獲取一個含時間戳的Ticket-Granting Ticket(TGT)。
授權:客戶端使用TGT向Ticket-Granting Server(TGS)請求一個服務Ticket。
服務請求:客戶端向伺服器出示服務Ticket,以證實自己的合法性。該伺服器提供客戶端所需服務,在Hadoop應用中,伺服器可以是namenode或jobtracker。

參考文獻:http://blog.51cto.com/liuqunying/1416995