本地FTP上傳檔案至Linux伺服器報錯

2021-08-24 20:46:54 字數 1458 閱讀 9604

本地不是tomcat伺服器測試,生產環境部署vsftpd服務,一開始偷懶使用匿名使用者登入ftp上傳檔案,指定匿名使用者關聯的路徑:

配置/etc/vsftpd/vsftpd.conf檔案

匿名使用者登入必須配置密碼包含@,即郵箱位址,比如anonymous/[email protected]。無法連線到伺服器,本地測試連線伺服器ftp 192.168.10.12 14888,無法連線。懷疑是防火牆的原因,關閉防火牆之後連線成功,但是不能建立目錄和上傳檔案,修改vsftpd.conf的配置local_umask=022,改為local_umask=000,具有777的許可權:

匿名使用者可以建立資料夾,但是仍然無法上傳檔案,網上搜尋說是需要使用被動模式,這樣ftp服務會分配固定埠來和客戶端互動,所以在**中連線ftp伺服器之後新增ftpclient.enterlocalpassivemode();表示使用被動模式:

ftpclient.connect(hostname, port); //連線ftp伺服器

ftpclient.login(username, password);//登入ftp伺服器

ftpclient.enterlocalpassivemode();// 被動模式連線

然後可以上傳檔案,但是為了安全期間還是新建使用者專門用於ftp,並且有需求ftp使用者要和指定目錄關聯,使用命令如下:

useradd -d 目錄名 使用者名稱

passwd 使用者名稱

由於使用該命令會自動建立指定的目錄,而伺服器上已存在該目錄,產生了警告,需要刪除使用者和該目錄重新建立使用者,需要刪除乾淨,否則會導致建立使用者失敗:

userdel -rf 使用者名稱
現在就可以使用新建的使用者ftp登入了,且登入的是指定的路徑,但是伺服器防火牆啟動之後還是不能上傳,由於生產環境防火牆的限制,只對10000以上的埠開放,而被動模式ftp服務分配的埠也是隨機的,外網ip也不是固定的,不方便在防火牆加白名單,所以需要修改vsftpd.conf中關於被動模式的埠範圍的配置,可以通過配置pasv_min_port和pasv_max_port相同來是客戶端上傳檔案連線的ftp埠固定下來:

現在ftp服務被動模式接收客戶端上傳的檔案就會使用固定埠14000,然後啟動防火牆,上傳檔案也是成功的。

另外,使用windows部署tomcat向linuxftp服務上傳檔案需要注意路徑的問題,因為**使用的file.separator做分隔符,它是自動識別系統的,windows系統的路徑分隔符是「\」而linux系統的路徑分隔符是「/」,所以如果使用windows測試linux的ftp服務時一定要注意路徑分隔符的問題。

將本地檔案上傳至github

第一步 在本地建立個資料夾 比如 名字叫my react 第二步 開啟終端輸入命令進入到my react資料夾中,然後輸入 git init 第三步 連線遠端倉庫,也就是連線github 詳細步驟請移步 第四步 建立github儲存庫 第五步 在github上建立好git倉庫之後我們就可以和本地倉庫...

Windows系統定時上傳檔案至FTP

基本操作 1.cmd下,輸入ftp host或者先輸入ftp,然後輸入open host,其中host為要連線的計算機名 ip位址或ftp伺服器的ipv6位址。2.根據提示輸入登入的使用者名稱密碼。3.cd path,利用cd命令進入到某個路徑下 4.put source file1 將本地sour...

FTP檔案上傳

是網上找的例子,原文找不到了。public class ftputils2 return 判斷是否登入成功 public boolean ftplogin else ftp伺服器連線回答 int reply this.ftpclient.getreplycode if ftpreply.isposi...