国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

詳解Java使用Jsch與sftp服務(wù)器實現(xiàn)ssh免密登錄

2019-11-02 14:08:09
字體:
供稿:網(wǎng)友

一、什么是SFTP?

SFTP是一個安全文件傳送協(xié)議,可以為傳輸文件提供一種安全的加密方法。SFTP 為 SSH的一部份,是一種傳輸文件到服務(wù)器的安全方式。SFTP是使用加密傳輸認證信息和傳輸?shù)臄?shù)據(jù),所以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術(shù),所以傳輸效率比普通的FTP要低得多,如果您對網(wǎng)絡(luò)安全性要求更高時,可以使用SFTP代替FTP。

二、什么是Jsch以及它的作用?

Jsch是一個純粹的用java實現(xiàn)SSH功能的java library。如果要知道Jsch的功能需先了解一下SSH。SSH是一個安全協(xié)議,用來在不同系統(tǒng)或者服務(wù)器之間進行安全連接,在連接和傳送數(shù)據(jù)的過程中會進行加密。SSH一般是基于客戶端的或者Linux命令行,比如window同過OpenSSH、putty等客戶端的工具,在linux上可以通過ssh username@host命令進行連接。但是如果在Java中如何實現(xiàn)SSH呢?這時候便是通過JSCH來實現(xiàn)此的功能。

三、JSCH的依賴

<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.51</version> </dependency> 

四、Jsch詳解

1. Jsch提供了四種認證機制:

password 密碼方式 publickey(DSA,RSA) 公私鑰方式 keyboard-interactive gss-api-with-mic

常見的認證方式為password認證,但是本文接下來主要討論基于publickey認證。對于后面兩種認證方式感興趣的朋友可以去查閱相關(guān)資料,本文將不做討論。

2. 配置SSH免密步驟概述

在linux下執(zhí)行ssh-keygen -t rsa 生成一對對應(yīng)公私鑰。 把公鑰復(fù)制到將要連接的目標(biāo)服務(wù)器上,放到對應(yīng)用戶的.ssh目錄下。 進入到.ssh中:cd ~/.ssh,并公鑰導(dǎo)入到authorized_keys信任列表:cat 公鑰 >> authorized_key 更新權(quán)限:chmod 600 authorized_keys,自此SSH免密登錄配置完成。

3. Jsch基于publickey認證Demo

//從配置文件中讀取 目標(biāo)服務(wù)器ip、端口、用戶名、私鑰路徑 String ftpHost = prop.getProperty("downloadHost"); String port = prop.getProperty("downloadftpPort"); String ftpUserName = prop.getProperty("downloadUserName"); String priKeyBasePath = prop.getProperty("priBaseKeyPath"); //建立JSch對象 JSch jsch = new JSch(); Session session = null; ChannelSftp channelSftp = null try{  //添加私鑰  jsch.addIdentity(priKeyBasePath);  session=jsch.getSession(userName, hostIp, port);  Properties sessionConfig = new Properties();  //SSH 公鑰檢查機制 no、ask、yes  sessionConfig.put("StrictHostKeyChecking", "no");  session.connect();   channelSftp = (ChannelSftp) session.openChannel("sftp"); // 打開SFTP通道  channelSftp.connect();  //進行操作 如進入指定文件夾  channelSftp.cd(config.getFileDir()); }catch (JSchException e) {  logger.error("sftp getConnect error : "+e); } 

4. ChannelSftp類

ChannelSftp是JSch實現(xiàn)SFTP核心類,其包含了所有SFTP的方法,如

put()--文件上傳 get()--文件下載 cd()--進入指定目錄 ls()--得到指定目錄下的文件列表 rename()--重命名指定文件或目錄 rm()--刪除指定文件 mkdir()--創(chuàng)建目錄 rmdir()--刪除目錄

本Demo將Jsch核心主要代碼提取出來進行討論,省去了其他代碼。網(wǎng)上也有許多完整的基于其他認證方式整合的工具類提供,需要的朋友可以自行查找。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 渑池县| 白银市| 诏安县| 东乡县| 乐陵市| 平山县| 六安市| 新蔡县| 巩义市| 来安县| 三明市| 武功县| 南宫市| 彭阳县| 灵武市| 宾阳县| 金溪县| 前郭尔| 石棉县| 客服| 浠水县| 莱阳市| 唐海县| 福建省| 六盘水市| 都匀市| 博客| 南丰县| 凤凰县| 营山县| 鹿泉市| 屯门区| 南宁市| 道孚县| 剑河县| 内黄县| 固阳县| 当雄县| 漳州市| 佛山市| 那曲县|