A. ssh secure shell 怎麼上傳文件
ssh secure shell 怎麼上傳文件
FTP(File Transfer Protocol)是 Internet 上用來傳送文件的協議(文件傳輸協議)。它是為了我們能夠在 Internet 上互相傳送文件而制定的的文件傳送標准,規定了 Internet 上文件如何傳送。也就是說,通過 FTP 協議,我們就可以跟 Internet 上的 FTP 伺服器進行文件的上傳(Upload)或下載(Download)等動作。
和其他 Internet 應用一樣,FTP 也是依賴於客戶程序/伺服器關系的概念。在 Internet 上有一些網站,它們依照 FTP 協議提供服務,讓網友們進行文件的存取,這些網站就是 FTP 伺服器。網上的用戶要連上 FTP 伺服器,就要用到 FPT 的客戶端軟體,通常 Windows 都有「ftp」命令,這實際就是一個命令行的 FTP 客戶程序,另外常用的 FTP 客戶程序還有 CuteFTP、Ws_FTP、FTP Explorer等。
要連上 FTP 伺服器(即「登陸」),必須要有該 FTP 伺服器的帳號。如果是該伺服器主機的注冊客戶,你將會有一個 FTP 登陸帳號和密碼,就憑這個帳號密碼連上該伺服器。但 Internet 上有很大一部分 FTP 伺服器被稱為「匿名」(Anonymous)FTP 伺服器。這類伺服器的目的是向公眾提供文件拷貝服務,因此,不要求用戶事先在該伺服器進行登記注冊。
B. ssh 多文件上傳,怎麼實現
多附件struts 1.x,以下代碼由agatezone提供。
1.Jsp要用javascript
2.form必須enctype="multipart/form-data"
3.action要用form.getMultipartRequestHandler()獲取文件並存儲
struts2 更簡單,google之。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>struts1.x upload example</title>
<script type="text/javascript">
function addFileField() {
input_filesCount = document.getElementById("filesCount");
input_filesCount.setAttribute("value", parseInt(input_filesCount.getAttribute("value")) + 1)
div_files = document.getElementById("files");
br = document.createElement("br");
file = document.createElement("input");
text = document.createTextNode("File " + input_filesCount.getAttribute("value") + " : ");
file.setAttribute("type", "file");
file.setAttribute("name", "file" + input_filesCount.getAttribute("value"));
div_files.appendChild(text);
div_files.appendChild(file);
div_files.appendChild(br);
}
</script>
</head>
<body>
<form action="upload.do" method="post" enctype="multipart/form-data">
<input id="filesCount" type="hidden" name="filesCount" value="1" />
<div id="files">
File 1 :
<input type="file" name="file1" />
<br />
</div>
<input type="button" onclick="javascript:addFileField();"
value="add a file" />
<br />
<input type="submit" />
</form>
</body>
</html>
---------------------------------------
package cn.agatezone.example.struts1x.upload;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
public class UploadAction extends Action {
@SuppressWarnings("unchecked")
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
String dirPath = getServlet().getServletContext().getRealPath("/") + "upload";
Hashtable fileh = form.getMultipartRequestHandler().getFileElements();
for (Enumeration e = fileh.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
try {
FormFile formfile = (FormFile) fileh.get(key);
String filename = formfile.getFileName().trim(); // 文件名
/*
* @注意!!!
* 這里我沒有處理中文,但是如果想要中文無問題,
* 可以設置tomcat的server.xml中的URIEncoding="UTF-8"
*
* 但是,要是不設置的話可以自己用代碼解決問題!
* 為了簡單明了,本例只作為struts1.x上傳部分展示。
*/
if (!"".equals(filename)) {
// 不同的瀏覽器傳上的文件名可能有區別,有的是全路徑的
// 在這里保存文件
InputStream ins = formfile.getInputStream();
OutputStream os = new FileOutputStream(dirPath + File.separatorChar + filename);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
}
} catch (Exception ex) {
System.out.println("出錯了!\n" + ex);
}
}
return mapping.findForward("success");
}
}
---------------------------------------------------------
銳志陳鵬 專注Java/.Net培訓
銳志技術社區:http://www.witshare.org/bbs/
C. 誰有SSH上傳下載文件的代碼
上傳:
package com.wb.ekeng.web.action.file;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessages;
import com.wb.ekeng.ebo.BO_File;
import com.wb.ekeng.info.INFO_Admin;
import com.wb.ekeng.info.INFO_File;
import com.wb.ekeng.web.action.BaseAction;
import com.wb.ekeng.web.filemanage.File;
import com.wb.ekeng.web.filemanage.SmartUpload;
import com.wb.ekeng.web.util.Convertor;
public class ACT_AddFile extends BaseAction {
public ACT_AddFile() {
super();
}
public ActionForward doExcute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, ActionMessages errors) throws Exception {
//文件保存路徑
String strSavePath ="/upload/file/";
//允許上傳的文件類型
String strAllowExt ="jpg,jpeg,gif,bmp,txt,java";
//允許上傳最大位元組數
int maxSize =1048576;
//上傳文件
SmartUpload upload=new SmartUpload();
upload.initialize(this.getServlet().getServletConfig(), request, response);
upload.upload("UTF-8");
//獲取文件
String[] allowExtList =strAllowExt.split(",");
File fileBuffer =upload.getFiles().getFile(0);
if(fileBuffer.isMissing()){
throw new Exception("error.act.act_addfile.error3");
}
HttpSession session=request.getSession();
INFO_Admin loginAdmin=(INFO_Admin) session.getAttribute("loginadmin");
Long lAdminId=loginAdmin.getId();
String strName=upload.getRequest().getParameter("name");
//如果遇見上傳中文文件出現亂碼問題,上一句可以改成這樣(其他語句參照這): String strName=new String(upload.getRequest().getParameter("name").getBytes(),"UTF-8");
String strNeedPoint=upload.getRequest().getParameter("needpoint");
String strType=upload.getRequest().getParameter("type");
String strDes=upload.getRequest().getParameter("des");
Integer iNeedPoint=null;
//驗證參數
if(strName==null||strNeedPoint==null||strType==null||strDes==null){
throw new Exception("error.common.badrequest");
}
this.doValidate(errors,INFO_File.validateName(strName));
this.doValidate(errors,INFO_File.validateNeedPoint(strNeedPoint));
this.doValidate(errors,INFO_File.validateType(strType));
this.doValidate(errors,INFO_File.validateDes(strDes));
//驗證文件大小
int FileSize=fileBuffer.getSize();
if(FileSize>maxSize){
this.doValidate(errors,"error.act.act_addfile.error2");
}
//驗證文件類型
String strFileExt =fileBuffer.getFileExt();
boolean flag =false;
for(int i=0;i<allowExtList.length;i++) {
if(allowExtList[i].toLowerCase().equals(strFileExt.toLowerCase())){
//找到了匹配的後綴
flag=true;
}
}
if(strFileExt.equals("") || flag ==false){
this.doValidate(errors,"error.act.act_addfile.error1");
}
if(!errors.isEmpty()){
System.out.println(errors.toString());
return null;
}
//參數轉換
strName =Convertor.convertHalfToFull(strName);
iNeedPoint=new Integer(strNeedPoint);
Integer iFileSize=Integer.valueOf(FileSize);
//構造saveName
String strSaveName=lAdminId+"_"+BO_File.getNowString()+"."+upload.getFiles().getFile(0).getFileExt();
fileBuffer.saveAs(strSavePath + strSaveName);
//提交數據
BO_File boFile=new BO_File();
boFile.addFile(strName,strType,strDes,strSaveName,iNeedPoint,lAdminId,iFileSize);
return new ActionForward("/admin/main/download/admindownload.do",true);
}
}
下載:
package com.wb.ekeng.web.action.file;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessages;
import com.wb.ekeng.web.action.BaseAction;
import com.wb.ekeng.ebo.BO_File;
import com.wb.ekeng.info.INFO_File;
import com.wb.ekeng.info.INFO_User;
import com.wb.ekeng.web.filemanage.SmartUpload;
/**
* 備注:
* 文件下載Action
* 輸入:
* String fileid
* String userid
* 輸出:
*/
public class ACT_Download extends BaseAction {
public ACT_Download() {
super();
}
public ActionForward doExcute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, ActionMessages errors) throws Exception {
HttpSession session =request.getSession();
//獲取參數
Long lFileId=null;
String fileId =request.getParameter("fileid");
INFO_User infoUser=(INFO_User)session.getAttribute("loginuser");
//驗證參數
if(fileId==null || infoUser.getId() ==null){
throw new Exception("error.common.badrequest");
}
lFileId=new Long(fileId);
BO_File boFile=new BO_File();
INFO_File infoFile =null;
//判斷用戶是否為第一次下載
接收存儲下載資源Id的session,然後判斷要下載的資源Id是否沒存在於當前登錄的下載頁表中(即是否是第一次下載),如果是則調用下載扣除積分方法,並把這個資源的Id存入列表中。如果不是,則把標記位置false,直接下載資源,不調用扣除積分的方法。
boolean isFirstDownLoad =true;
ArrayList downFileList =(ArrayList)session.getAttribute("downfilelist");
for(int index =0; index <downFileList.size(); index ++){
Long lFileIdBuffer =(Long)downFileList.get(index);
if(lFileIdBuffer.longValue() ==lFileId.longValue()){
isFirstDownLoad =false;
break;
}
}
if(isFirstDownLoad){
infoFile=boFile.download(lFileId,infoUser.getId());
downFileList.add(lFileId);
}else{
infoFile=boFile.getFile(lFileId);
}
(下面就是有關下載的代碼)
//新建一個SmartUpload對象
SmartUpload su = new SmartUpload();
//初始化
su.initialize(this.getServlet().getServletConfig(), request, response);
//設定contentDisposition為null以禁止瀏覽器自動打開文件,
//保證點擊鏈接後是下載文件。若不設定,則下載的文件擴展名為
//doc時,瀏覽器將自動用word打開它。擴展名為pdf時,
//瀏覽器將用acrobat打開。
su.setContentDisposition(null);
//下載文件
su.downloadFile("/upload/file/"+infoFile.getSaveName());
return mapping.findForward("success");
}}
D. ssh22號埠 怎麼上傳文件
你可以使用 Securite Ftp 客戶端程序,將埠號設置成:22 號埠(如果是標准埠)。然後別的和其他 FTP 客戶端程序一樣進行操作。但是有一個前提就是:你要上傳的對方的 FTP 伺服器必須是已經配置成 SSH 服務的 FTP 伺服器才行。否則的話,你只能夠使用普通的 ftp 客戶端程序(例如:CuteFtp、wsftp 等)進行文件上傳(標准埠:21)。
E. win7下通過ssh如何上傳文件至linux伺服器
下載一個flashfxp或者其它類型的ftp鏈接軟體,比如winscp也可以。
新建一個站點鏈接,鏈接模式為sftp
確保埠號就是你伺服器的ssh埠。
然後輸入root用戶名,和密碼就可以鏈接到伺服器默認的root目錄,可以自己調整,直接就可以像ftp一樣上傳文件。
F. LINUX系統 SSH工具上傳文件命令
scp 可以在 2個 linux 主機間復制文件;
命令基本格式:
scp [可選參數] file_source file_target
======
從 本地 復制到 遠程
======
* 復制文件:
* 命令格式:
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
G. 怎麼把文件通過ssh傳送
scp 命令是 SSH 中最方便有用的命令了,試想,在兩台伺服器之間直接傳送文件,僅僅用 scp 一個命令就完全解決了。 你可以在一台伺服器上 以 root 身份運行 #scp servername:/home/ftp/pub/file1 . 這樣就把另一台伺服器上的文件 /home/ftp/pub/file1 直接傳到本機器的當前目錄下,當然你也可以用 #scp /tmp/file2 servername:/boot 把本機上的文件 /tmp/file2 送到另一台機器的 /boot 目錄下。而且整個傳送過程仍然是用 SSH 加密的。
scp 就是 secure , 是用來進行遠程文件拷貝的 . 數據傳輸使用 ssh1, 並且和 ssh1 使用相同的認證方式 , 提供相同的安全保證 . 與 rcp 不同的是 ,scp 會要求你輸入密碼如果需要的話 .
最簡單的應用如下 :
scp 本地用戶名 @IP 地址 : 文件名 1 遠程用戶名 @IP 地址 : 文件名 2
[ 本地用戶名 @IP 地址 :] 可以不輸入 , 可能需要輸入遠程用戶名所對應的密碼 .
可能有用的幾個參數 :
-v 和大多數 linux 命令中的 -v 意思一樣 , 用來顯示進度 . 可以用來查看連接 , 認證 , 或是配置錯誤 .
-C 使能壓縮選項 .
-P 選擇埠 . 注意 -p 已經被 rcp 使用 .
-4 強行使用 IPV4 地址 .
-6 強行使用 IPV6 地址 .
-r Recursively entire directories.
H. 如何通過ssh上傳文件到伺服器
需要用到scp命令行。
scp <本地文件名> <用戶名>@<ssh伺服器地址>:<上傳保存路徑即文件名> /*註:必須在未登錄伺服器的情況下*/
舉例以說明:
如果希望將當前目錄下的a.txt文件上傳到ssh伺服器上test文件夾並改名為b.txt,其中ssh伺服器網址為127.0.0.1,用戶名admin。
代碼如下:
程序代碼 scp a.txt [email protected]:/home/neo/test/b.txt
下載也很簡單,只需要將「本地文件名」和後面伺服器的信息對調即可
I. 如何ssh傳輸文件到linux
linux 傳輸文件 用的是scp命令
例如: 將本地文件傳輸到192.168.1.10的root目錄下
scp /root/1.txt 192.168.1.10://root/
例如 :將192.168.1.10的root目錄下的文件傳到本地的root下
scp 192.168.1.10://root/1.txt /root/
J. ssh怎麼把本地的文件上傳到伺服器
安裝ssh
也可以新建用戶名用於ssh 傳輸
1.查詢是否安裝了openssh
rpm -qa
|grep openssh
若沒有則安裝
2.啟動ssh服務
service sshd
start
/etc/rc.d/init.d/sshd
start
3.開機啟動ssh
chkconfig --add sshd
chkconfig --level 345 sshd on
[email protected]是本地機向遠程[email protected]傳輸文件
[email protected]下 執行
ssh-keygen -t rsa
則在/root/.ssh/文件夾下生成 id_rsa、id_rsa.pub兩個文件
過程如下
Generating public/private rsa
key pair.
Enter file in which to save the
key (/home/.username/ssh/id_rsa):#回車
Enter passphrase (empty for no
passphrase):#回車
Enter same passphrase
again:#回車
Your identification has been
saved in /home/.username /.ssh/id_rsa.
Your public key has been saved
in /home/.username /.ssh/id_rsa.pub.
The key fingerprint is:
38:25:c1:4d:5d:d3:89:bb:46:67:bf:52:af:c3:17:0c
username@localhost
Generating RSA keys:
Key generation complete.
5.
把192.168.1.10上的id_rsa.pub拷貝到192.168.1.8下且重命名為authorized_keys
mkdir
/root/.ssh
有時需要新建文件夾
/root/.ssh/
變更屬性 chmod
644 .ssh/authorized_keys
形如:/root/.ssh/authorized_keys
6.
從本地192.168.1.10拷貝文件到遠程伺服器192.168.1.8
scp
/root/install.log [email protected]:/usr/local/src
可以用通配符拷貝
scp
/root/install.* [email protected]:/usr/local/src
拷入的文件有install.log、install.log.syslog
命令有
三,復制文件或目錄命令:
復制文件:
(1)將本地文件拷貝到遠程
scp
文件名用戶名@計算機IP或者計算機名稱:遠程路徑
本地192.168.1.8客戶端
scp /root/install.* [email protected]:/usr/local/src
(2)從遠程將文件拷回本地
scp
用戶名@計算機IP或者計算機名稱:文件名本地路徑
本地192.168.1.8客戶端取遠程伺服器12、11上的文件
scp [email protected]:/usr/local/src/*.log
/root/
scp [email protected]:/usr/local/src/*.log
/root/
復制目錄:
(1)將本地目錄拷貝到遠程
scp -r
目錄名用戶名@計算機IP或者計算機名稱:遠程路徑
(2)從遠程將目錄拷回本地
scp -r
用戶名@計算機IP或者計算機名稱:目錄名本地路徑
7. 當本地客戶端 取其他多台伺服器中的文件
本地192.168.1.8客戶端
adser sshuser
passwd sshuser
usermod -G root sshuser 把用戶加入root組
生成密鑰
ssh-keygen -t rsa
密鑰位置在
/home/sshuser/.ssh/id_rsa.pub
遠程獲取文件
scp [email protected]:/usr/local/src/*.log
/home/sshuser
scp [email protected]:/usr/local/src/*.log
/home/sshuser
a11.log a12.log 文件會獲取到 /home/sshuser文件夾下
注意事項:
從遠程取文件的地址,和放入本地的地址。許可權一定要屬於root組或者sshuser用戶
chown -R sshuser.root /home/sshuser
擁有者。群組
遠程192.168.1.11伺服器
adser sshuser
passwd sshuser
usermod -G root sshuser
進入
/home/sshuser/
建立.ssh目錄
mkdir /home/sshuser/.ssh
把
192.168.1.8的公鑰(id_rsa.pub)拷入並重命名為authorized_keys
在/usr/local/src/中建立 a11.log文件
遠程192.168.1.12伺服器
adser sshuser
passwd sshuser
usermod -G root sshuser
進入
/home/sshuser/
建立.ssh目錄
mkdir /home/sshuser/.ssh
把
192.168.1.8的公鑰(id_rsa.pub)拷入並重命名為authorized_keys
在/usr/local/src/中建立 a12.log文件