JGit與遠程倉庫連接使用的兩種驗證方式(ssh和https)

JGit是使用JAVAAPI來操控Git倉庫的庫,由Eclipse公司維護。他提供的API分紅兩個層次,底層命令和高層命令。底層API是直接做用於低級的倉庫對象,高層的API是一個面向普通用戶級別功能友好的前端。前端

  JGit主要經過SSHHTTP(S)的方式與遠程倉庫進行交互,此外也能夠用Git協議(只讀)。經過這兩種方式,必然是須要添加驗證信息的。介紹以下:git

1HTTPS - https://example.com/repo.git安全

 

CloneCommand cloneCommand = Git.cloneReposity();session

 

CloneCommand經過setCredentialsProvider()的方法,經過賦值一個UsernamePasswordCredentialsProvider對象,來提供用戶名和密碼登錄。ssh

 

(不建議使用HTTP的方式傳送,可是也可行)ide

  (2)SSH with Public Key -測試

 

   其實經過公鑰訪問的連接:spa

 

 

    git@***.***.***/user/***.gitcode

 

   而SSH利用公鑰的訪問方式的認證信息,經過JSCH庫提供。而在JGit中提供了JschConfigSessionFactory的抽象類,代碼以下:對象

SshSessionFactory sshSessionFactory = new JschConfigSessionFactory() {    @Override   protected void configure( Host host, Session session ) {       /*       解除HostKey檢查,也就意味着能夠接受未知的遠程主機的文件,這是不安全的,這種模式只是用於測試爲目的的。    利用ssh-keyscan -t rsa hostname,收集主機數據。     */ session.setConfig("StrictHostKeyChecking","no"); } };

如下這是在command中註冊認證信息:

cloneCommand.setTransportConfigCallback( new TransportConfigCall back(){ public void configure(Transporttransport){ SshTransport sshTransport=(SshTransport)transport; sshTransport.setSshSessionFactory(sshSessionFactory); } }

3)SSH  with Password - ssh://user@example.com/repo.git

 

 

使用的是上述JschConfigSessionFactory重寫的configure方法中,設置password,具體就不詳述了。

相關文章
相關標籤/搜索