http://ice-k.iteye.com/blog/1068275html
http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888391.htmllinux
有一台主机,安装了windows7,在其安装了virtualbox,而后安装了ubuntu虚拟机。在windows7上安装SecureCRT来ssh链接ubuntu虚拟机。通常在windows上面下载软件,而后经过vsftp上传到ubuntu虚拟机上。可是这样很是麻烦,如今考虑使用sftp协议来直接传输。ubuntu
使用SecureCRT软件ssh链接到ubuntu虚拟机。而后在SecureCRT上面打开SFTP会话,以下图所示: windows
进入到sftp命令窗口之后,就能够经过sftp命令来进行文件互传的操做。下面主要介绍一下sftp命令的含义。ssh
sftp> help Available commands: ascii Set transfer mode to ASCII binary Set transfer mode to binary cd path Change remote directory to 'path' lcd path Change local directory to 'path' detail remote-path Display system information about remote file or folder ldetail local-path Display system information about local file or folder chgrp group path Change group of file 'path' to 'group' chmod mode path Change permissions of file 'path' to 'mode' chown owner path Change owner of file 'path' to 'owner' exit Quit sftp help Display this help text include filename Include commands from 'filename' Alternate: < filename get [-r][-a | -b] remote-path Download file -r downloads directory recursively force ascii (-a) or binary (-b) mode ln [-s] existingpath linkpath Hardlink / symlink remote file ls [options] [path] Display remote directory listing lls [options] [path] Display local directory listing mkdir path Create remote directory lmkdir path Create local directory mv oldpath newpath Move remote file lmv oldpath newpath Move local file open [user@]host[:port] Connect to remote host put [-r][-a | -b] local-path Upload file -r uploads directory recursively force ascii (-a) or binary (-b) mode pwd Display remote working directory lpwd Print local working directory quit Quit sftp rename oldname newname Rename remote file lrename oldname newname Rename local file rmdir path Remove remote directory lrmdir path Remove local directory rm path Delete remote file lrm path Delete local file su username Substitutes the current user This is only supported with VShell for Windows 3.5 or later. type [transfer-mode] Display or set file transfer mode view remote-path Download and open file version Display protocol version
翻译一下就是:ui
sftp-- help 可用命令: cd 路径 更改远程目录到“路径” lcd 路径 更改本地目录到“路径” chgrp group path 将文件“path”的组更改成“group” chmod mode path 将文件“path”的权限更改成“mode” chown owner path 将文件“path”的属主更改成“owner” exit 退出 sftp help 显示这个帮助文本 get 远程路径 下载文件 ln existingpath linkpath 符号连接远程文件 ls [选项] [路径] 显示远程目录列表 lls [选项] [路径] 显示本地目录列表 mkdir 路径 建立远程目录 lmkdir 路径 建立本地目录 mv oldpath newpath 移动远程文件 open [用户@]主机[:端口] 链接到远程主机 put 本地路径 上传文件 pwd 显示远程工做目录 lpwd 打印本地工做目录 quit 退出 sftp rmdir 路径 移除远程目录 lrmdir 路径 移除本地目录 rm 路径 删除远程文件 lrm 路径 删除本地文件 symlink existingpath linkpath 符号连接远程文件 version 显示协议版本
咱们主要用到的就是一下六个命令this
cd 路径 更改远程目录到“路径” lcd 路径 更改本地目录到“路径” ls [选项] [路径] 显示远程目录列表 lls [选项] [路径] 显示本地目录列表 put 本地路径 上传文件 get 远程路径 下载文件
这里在详细说明一下远程目录和本地目录。spa
远程目录:ls查看到的是ubuntu虚拟机上面的目录翻译
本地目录:lls查看到的是windows实体机上面的目录。3d
假设我须要实现windows下的e:\sftp\test1.txt和ubuntu下/home/enadmin/test2.txt的互换,能够进行一下操做:
查看目录权限
root@BJCGNMON01:/home# ll total 20 drwxr-xr-x 5 root root 4096 Apr 18 15:21 ./ drwxr-xr-x 24 root root 4096 Jan 3 14:14 ../ drwxr-xr-x 9 enadmin enadmin 4096 Apr 18 15:22 enadmin/ drwxr-xr-x 2 root root 4096 Apr 18 15:21 sftp/--能够看到sftp的权限是root的 drwxr-xr-x 2 root root 4096 Apr 18 14:57 test/ root@BJCGNMON01:/home# chown -R enadmin.enadmin sftp/ root@BJCGNMON01:/home# ll total 20 drwxr-xr-x 5 root root 4096 Apr 18 15:21 ./ drwxr-xr-x 24 root root 4096 Jan 3 14:14 ../ drwxr-xr-x 9 enadmin enadmin 4096 Apr 18 15:22 enadmin/ drwxr-xr-x 2 enadmin enadmin 4096 Apr 18 15:21 sftp/--修改之后权限变成enadmin的了 drwxr-xr-x 2 root root 4096 Apr 18 14:57 test/
拷贝文件
sftp> put test* --初始想将文件从windows系统put到ubuntu系统,发现失败,提示拒绝访问 Uploading test1.txt to /home/test1.txt put: failed to upload e:/sftp/test1.txt. 拒绝访问。 Uploading test2.txt to /home/test2.txt put: failed to upload e:/sftp/test2.txt. 拒绝访问。 Uploading test3.txt to /home/test3.txt put: failed to upload e:/sftp/test3.txt. 拒绝访问。 sftp> pwd --查看当前目录是/home目录,权限是root的 /home sftp> cd /home/enadmin/ --我切换到enadmin目录下 sftp> ls Graphs.pm msmtp ntp sent smokeping.tar.gz smokepingrtt.tar.gz smokepingrtt2.tar.gz Target wqy wqy-zenhei-0.8.38-1.deb sftp> lls test1.txt test2.txt test3.txt sftp> put test* -再次尝试将windows下的文件put到/homg/enadmin目录下,此次成功 Uploading test1.txt to /home/enadmin/test1.txt 100% 4 bytes 4 bytes/s 00:00:00 e:/sftp/test1.txt: 4 bytes transferred in 0 seconds (4 bytes/s) Uploading test2.txt to /home/enadmin/test2.txt 100% 4 bytes 4 bytes/s 00:00:00 e:/sftp/test2.txt: 4 bytes transferred in 0 seconds (4 bytes/s) Uploading test3.txt to /home/enadmin/test3.txt 100% 5 bytes 5 bytes/s 00:00:00 e:/sftp/test3.txt: 5 bytes transferred in 0 seconds (5 bytes/s) sftp> cd /home/sftp/--在修改sftp目录权限之后,再次切换到sftp目录下 sftp> ls sftp> lls test1.txt test2.txt test3.txt sftp> put test* --这回put成功。因此跟权限相关 Uploading test1.txt to /home/sftp/test1.txt 100% 4 bytes 4 bytes/s 00:00:00 e:/sftp/test1.txt: 4 bytes transferred in 0 seconds (4 bytes/s) Uploading test2.txt to /home/sftp/test2.txt 100% 4 bytes 4 bytes/s 00:00:00 e:/sftp/test2.txt: 4 bytes transferred in 0 seconds (4 bytes/s) Uploading test3.txt to /home/sftp/test3.txt 100% 5 bytes 5 bytes/s 00:00:00 e:/sftp/test3.txt: 5 bytes transferred in 0 seconds (5 bytes/s)
注意点:这里须要注意权限的问题。加入我是使用enadmin帐户初始链接ubuntu的,那么我put的文件只能放到文件夹权限是enadmin的目录下,不能放到文件夹权限是root的目录下。若是想放到文件夹权限是root的目录下,那么初始就使用root帐户链接ubunut,而后再建立sftp会话,这样就能够了。
get操做没有权限设定
sftp> pwd /home/enadmin sftp> lpwd e:/Documents sftp> lcd e:/sftp --切换目录 sftp> lls rc.local test1.txt test2.txt test3.txt sftp> ls Graphs.pm msmtp ntp sent smokeping.tar.gz smokepingrtt.tar.gz smokepingrtt2.tar.gz Target test1.txt test2.txt test3.txt wqy wqy-zenhei-0.8.38-1.deb sftp> get Graphs.pm --下载文件到windows Downloading Graphs.pm from /home/enadmin/Graphs.pm 100% 13KB 13KB/s 00:00:00 /home/enadmin/Graphs.pm: 13503 bytes transferred in 0 seconds (13 KB/s) sftp> lls --查看windows目录 Graphs.pm rc.local test1.txt test2.txt test3.txt sftp>