电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

如何在java中使用SFTP協議安全的傳輸文件

瀏覽:45日期:2022-08-22 18:24:07

如何在java中使用SFTP協議安全的傳輸文件

本文介紹在Java中如何使用基于SSH的文件傳輸協議(SFTP)將文件從本地上傳到遠程服務器,或者將文件在兩個服務器之間安全的傳輸。我們先來了解一下這幾個協議

SSH 是較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。比如:我們購買的云服務器登陸的時候使用的協議都是ssh。 ftp協議通常是用來在兩個服務器之間傳輸文件的,但是它本質上是不安全的。 那么SFTP是什么?SFTP可以理解為SSH + FTP,也就是安全的網絡文件傳輸協議。

一般來說,SFTP和FTP服務都是使用相應的客戶端軟件來提供服務。如果你希望在java代碼中使用SFTP協議進行安全的文件傳輸,那么這篇文章非常適合你。

1. 導入JSch 依賴包

在maven項目pom.xml中導入如下的坐標,我們使用JSch,JSch將SFTP協議封裝為對應的API供我們調用。

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

2. 文件傳輸 ? JSch例子

2.1 get與put方法

在JSch,我們可以使用put和get在服務器之間進行文件傳輸。put方法用來將文件從本地系統傳輸到遠程服務器。

channelSftp.put(localFile, remoteFile);

get方法將文件從遠程服務器下載到本地系統。

channelSftp.get(remoteFile, localFile);

2.2 使用用戶名和密碼進行認證

JSch jsch = new JSch();jsch.setKnownHosts('/home/zimug/.ssh/known_hosts');jschSession = jsch.getSession(USERNAME, REMOTE_HOST, REMOTE_PORT);jschSession.setPassword(PASSWORD); '/home/zimug/.ssh/known_hosts'為SSH的known_hosts文件,也就是可信遠程主機的公鑰保存文件。 USERNAME 為用戶名 REMOTE_HOST遠程主機的Ip REMOTE_PORT遠程主機端口 PASSWORD遠程主機登錄密碼

2.3.使用公鑰和私鑰進行認證

如果讀者不能理解公鑰和私鑰的用法及含義,需要先自行補充一下SSH知識。

本地私鑰?/home/登錄用戶名/.ssh/id_rsa 遠程公鑰默認保存位置?~/.ssh/authorized_keys

JSch jsch = new JSch();jsch.setKnownHosts('/home/zimug/.ssh/known_hosts');jschSession = jsch.getSession(USERNAME, REMOTE_HOST, REMOTE_PORT);jsch.addIdentity('/home/zimug/.ssh/id_rsa');

2.4 完整JSch文件傳輸示例

將文件從本地系統傳輸到遠程服務器1.2.3.4,并使用SSH密碼登陸方式進行身份驗證。

import com.jcraft.jsch.*;public class SFTPFileTransfer { private static final String REMOTE_HOST = '1.2.3.4'; //遠程主機ip private static final String USERNAME = ''; //登錄用戶名 private static final String PASSWORD = ''; //登陸密碼 private static final int REMOTE_PORT = 22; //ssh協議默認端口 private static final int SESSION_TIMEOUT = 10000; //session超時時間 private static final int CHANNEL_TIMEOUT = 5000; //管道流超時時間 public static void main(String[] args) { String localFile = '/home/zimug/local/random.txt'; //本地文件路徑 String remoteFile = '/home/zimug/remote/targetfile.txt'; //上傳到遠程的文件路徑,要保證登錄用戶有寫權限 Session jschSession = null; try { JSch jsch = new JSch(); jsch.setKnownHosts('/home/zimug/.ssh/known_hosts'); jschSession = jsch.getSession(USERNAME, REMOTE_HOST, REMOTE_PORT); // 通過ssh私鑰的方式登錄認證 // jsch.addIdentity('/home/zimug/.ssh/id_rsa'); // 通過密碼的方式登錄認證 jschSession.setPassword(PASSWORD); jschSession.connect(SESSION_TIMEOUT); Channel sftp = jschSession.openChannel('sftp'); //建立sftp文件傳輸管道 sftp.connect(CHANNEL_TIMEOUT); ChannelSftp channelSftp = (ChannelSftp) sftp; // 傳輸本地文件到遠程主機 channelSftp.put(localFile, remoteFile); channelSftp.exit(); } catch (JSchException | SftpException e) { e.printStackTrace(); } finally { if (jschSession != null) {jschSession.disconnect(); } } System.out.println('文件傳輸完成!'); }}

3. JSch異常處理

在文件上傳的過程中,我們可能會遇到下面的一些異常

3.1UnknownHostKey異常

需要將遠程服務器IP地址添加到known_hosts文件中。

$ ssh-keyscan -t rsa 1.2.3.4 >> ~/.ssh/known_hosts

3.2對于私鑰無效異常

有可能是遠程服務器重新生成了私鑰,需要把私鑰分發復制到本地服務器。

ssh-copy-id -i ~/.ssh/id_rsa.pub <被分發的服務器ip>

3.3對于Auth fail異常

請確保提供的登錄密碼時正確的

com.jcraft.jsch.JSchException: Auth failat com.jcraft.jsch.Session.connect(Session.java:519)at com.zimug.io.howto.SFTPFileTransfer.main(SFTPFileTransfer.java:34)

作者:字母哥博客

以上就是如何在java中使用SFTP協議安全的傳輸文件的詳細內容,更多關于Java 傳輸文件的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 无线对讲-无线对讲系统解决方案-重庆畅博通信 | 滚塑PE壳体-PE塑料浮球-警示PE浮筒-宁波君益塑业有限公司 | 西安展台设计搭建_西安活动策划公司_西安会议会场布置_西安展厅设计西安旭阳展览展示 | 流量卡中心-流量卡套餐查询系统_移动电信联通流量卡套餐大全 | 暴风影音 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 上海新光明泵业制造有限公司-电动隔膜泵,气动隔膜泵,卧式|立式离心泵厂家 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 成都租车_成都租车公司_成都租车网_众行宝| 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 广州昊至泉水上乐园设备有限公司 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 安规电容|薄膜电容|陶瓷电容|智旭JEC安规电容厂家 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 南京欧陆电气股份有限公司-风力发电机官网 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 协议书_协议合同格式模板范本大全 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 石油/泥浆/不锈钢防腐/砂泵/抽砂泵/砂砾泵/吸砂泵/压滤机泵 - 专业石油环保专用泵厂家 | TPE塑胶原料-PPA|杜邦pom工程塑料、PPSU|PCTG材料、PC/PBT价格-悦诚塑胶 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 焦作网 WWW.JZRB.COM| 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 台湾HIWIN上银直线模组|导轨滑块|TBI滚珠丝杆丝杠-深圳汉工 | 广州展览设计公司_展台设计搭建_展位设计装修公司-众派展览装饰 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) |