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


    背景:

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

    方案:

      使用SecureCRT软件ssh连接到ubuntu虚拟机。然后在SecureCRT上面打开SFTP会话,可以按ALT + p 组合键如下图所示:  
     

    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 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
    复制代码

    翻译一下就是:

    复制代码
    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 est1.txt和ubuntu下/home/enadmin/test2.txt的互换,可以进行一下操作:

    put操作:windows->linux

    查看目录权限

    复制代码
    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操作: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.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> 
    复制代码

    在window下向linux传送文件的方法。

    首先在window中安装SecureCRT,然后在快速连接中建立一个到linux的连接,当然,你要先知道你的系统的ip,在终端中键入ifconfig可以查看到。

    然后连接即可登陆到linux的终端下

    要从linux传文件到window的话,这需要cd到你要传的文件的目录,然后用命令:sz 文件名即可上传。文件放在securesrt/download下面

    要从window传送文件到linux,则在终端中输入rz,然后会出来一个对话框让你选择文件传送的。

    一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地;

    与ssh有关的两个命令可以提供很方便的操作:

    sz:将选定的文件发送(send)到本地机器

    rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive)

    rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具

    windows端需要支持ZModem的telnet/ssh客户端(比如SecureCRT)

    运行命令rz,即是接收文件,SecureCRT就会弹出文件选择对话框,选好文件之后关闭对话框,文件就会上传到当前目录

    注意:单独用rz会有两个问题:上传中断、上传文件变化(md5不同),解决办法是上传是用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的勾选。

    -b binary 用binary的方式上传下载,不解释字符为ascii

    -e 强制escape 所有控制字符,比如Ctrl+x,DEL等

    运行命令sz file1 file2就是发文件到windows上(保存的目录是可以配置) 比ftp命令方便多了,而且服务器不用再开FTP服务了

    PS:Linux上rz/sz这两个小工具安装lrzsz-x.x.xx.rpm即可。

    当然,还可以设置一下目录了:

    设置一下上传和下载的默认目录

    options–>session options–>file transfer 下可以设置上传和下载的目录

    剩下的你只要在用SecureCRT登陆linux终端的时候:

    发送文件到客户端:sz filename

    zmodem接收可以自行启动.

    从客户端上传文件到linux服务端:

    只要服务端执行 : rz

    然后在 SecureCRT 里选文件发送,协议 zmodem

    附:yum 根据命令名反查安装包用法

    比如查 rz 命令的安装包名称

    yum  whatprovides */rz
  • 相关阅读:
    变换后台数据的表现形式(类型vue中的管道函数)
    R语言决策树和随机森林分类电信公司用户流失churn数据和参数调优、ROC曲线可视化
    R语言几何布朗运动 GBM模拟股票价格优化建立期权定价概率加权收益曲线可视化
    R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列
    python用pystan贝叶斯IRT模型拟合Rasch模型分析学生考试问题数据
    【视频】关联规则模型、Apriori算法及R语言挖掘商店交易数据与交互可视化|数据分享
    RK3288 Android7.1 PMU RK808 调试
    vue.js3:用qrcodeparser解析二维码图片(vue@3.2.36)
    一文详解|增长那些事儿
    为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)
  • 原文地址:https://www.cnblogs.com/shengs/p/4458741.html
Copyright © 2020-2023  润新知