使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件

来源:互联网 发布:上海网络学校 编辑:程序博客网 时间:2024/04/30 17:47

 

 

背景:

  有一台主机,安装了windows7,在其安装了virtualbox,然后安装了ubuntu虚拟机。在windows7上安装SecureCRTssh连接ubuntu虚拟机。一般在windows上面下载软件,然后通过vsftp上传到ubuntu虚拟机上。但是这样非常麻烦,现在考虑使用sftp协议来直接传输。

方案:

  使用SecureCRT软件ssh连接到ubuntu虚拟机。然后在SecureCRT上面打开SFTP会话,如下图所示:  

 

SFTP命令

  进入到sftp命令窗口以后,就可以通过sftp命令来进行文件互传的操作。下面主要介绍一下sftp命令的含义。

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 VShellfor

                                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

翻译一下就是:

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                       显示协议版本

我们主要用到的就是一下六个命令

cd 路径                        更改远程目录到“路径”

lcd 路径                       更改本地目录到“路径”

ls [选项] [路径]               显示远程目录列表

lls [选项] [路径]              显示本地目录列表

put 本地路径                   上传文件

get远程路径                  下载文件

这里在详细说明一下远程目录本地目录

远程目录:ls查看到的是ubuntu虚拟机上面的目录

本地目录:lls查看到的是windows实体机上面的目录。

实例:

假设我需要实现windows下的e:\sftp\test1.txtubuntu/home/enadmin/test2.txt的互换,可以进行一下操作:

put操作:windows->linux

查看目录权限

root@BJCGNMON01:/home# ll

total 20

drwxr-xr-x 5 root    root    4096 Apr 1815:21 ./

drwxr-xr-x24 root    root    4096 Jan  314:14 ../

drwxr-xr-x 9 enadmin enadmin4096 Apr 1815:22 enadmin/

drwxr-xr-x 2root    root    4096 Apr 18 15:21 sftp/--可以看到sftp的权限是root的

drwxr-xr-x 2 root    root    4096 Apr 1814:57 test/

root@BJCGNMON01:/home# chown -R enadmin.enadmin sftp/

root@BJCGNMON01:/home# ll

total 20

drwxr-xr-x 5 root    root    4096 Apr 1815:21 ./

drwxr-xr-x24 root    root    4096 Jan  314:14 ../

drwxr-xr-x 9 enadmin enadmin4096 Apr 1815:22 enadmin/

drwxr-xr-x 2enadmin enadmin 4096 Apr 18 15:21 sftp/--修改以后权限变成enadmin的了

drwxr-xr-x 2 root    root    4096 Apr 1814: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 transferredin0 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 transferredin0 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 transferredin0 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 transferredin0 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 transferredin0 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 transferredin0 seconds (5 bytes/s)

注意点:这里需要注意权限的问题。加入我是使用enadmin账户初始连接ubuntu的,那么我put的文件只能放到文件夹权限是enadmin的目录下,不能放到文件夹权限是root的目录下。如果想放到文件夹权限是root的目录下,那么初始就使用root账户连接ubunut,然后再创建sftp会话,这样就可以了。

get操作:linux->windows

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.pmfrom /home/enadmin/Graphs.pm

  100% 13KB     13KB/s 00:00:00    

/home/enadmin/Graphs.pm:13503 bytes transferredin0 seconds (13 KB/s)

sftp> lls --查看windows目录

Graphs.pm            rc.local              test1.txt

test2.txt            test3.txt

sftp>

 

注:http://www.cnblogs.com/xwdreamer/p/3673397.html

参考文献:

http://ice-k.iteye.com/blog/1068275

http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888391.html

 

0 0