JGit是使用JAVA的API來操控Git倉庫的庫,由Eclipse公司維護。他提供的API分紅兩個層次,底層命令和高層命令。底層API是直接做用於低級的倉庫對象,高層的API是一個面向普通用戶級別功能友好的前端。前端
JGit主要經過SSH和HTTP(S)的方式與遠程倉庫進行交互,此外也能夠用Git協議(只讀)。經過這兩種方式,必然是須要添加驗證信息的。介紹以下:git
(1)HTTPS - 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,具體就不詳述了。