1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 不同操作系统主机间传输文件PSCP最全的说明

不同操作系统主机间传输文件PSCP最全的说明

时间:2021-07-10 07:50:32

相关推荐

不同操作系统主机间传输文件PSCP最全的说明

第五章:用PSCP安全传输文件

(本文中,“参数”和“选项”均为同一个意思,可互换。)

PSCP是PuTTY的一个安全传输文件的客户端工具,它利用SSH连接在不同的计算机之间传文件。

如果你有一个安装有SSH-2的服务器,并且要和服务器进行交互式对话,请用PSFTP工具(详见第六章)。然而,PSFTP不能在SSH-1的服务器下工作。

5.1运行PSCP

PSCP是一个命令行的应用程序。也就是说,你不能双击它运行,只能在windows控制台的命令提示符下运行。(点击:开始-所有程序-附件-命令提示符)。

要使用PSCP,可以在PSCP所在目录下使用,也可以设置环境变量PATH,以便在任何目录下都可直接使用。即在autoexec.bat文件中,设置像这样的:

set PATH=C:\path\to\putty\directory;%PATH%,

根据自己文件的实际路径,修改上面的set语句。

5.2 PSCP用法

在windows控制台下(即在ms-dos命令行提示符下),只输入PSCP就可出现关于PSCP的用法说明,并告知当前PSCP的版本,以及PSCP各参数的简要说明。

C:\>pscp

PuTTY Secure Copy client

Release 0.76

Usage: pscp [options] [user@]host:source target

pscp [options] source [source...] [user@]host:target

pscp [options] -ls [user@]host:filespec

Options:

-V print version information and exit

显示版本号并退出

-pgpfp print PGP key fingerprints and exit

显示PGP密码指纹并退出。

-p preserve file attributes

保留文件属性

-q quiet, don't show statistics

安静模式,不显示传输状态

-r copy directories recursively

递归地拷贝目录及其中的文件

-v show verbose messages

显示完整信息

-load sessname Load settings from saved session

调取保存的会话(设置)

-P port connect to specified port

指定端口号

-l user connect with specified username

指定用户名

-pw passw login with specified password

指定密码

-1 -2 force use of particular SSH protocol version

强制使用SSH-1或SSH-2协议

-ssh -ssh-connection

force use of particular SSH protocol variant

-4 -6 force use of IPv4 or IPv6

强制使用IPv4或IPv6

-C enable compression

使用压缩

-i key private key file for user authentication

使用个人密码文件

-noagent disable use of Pageant

-agent enable use of Pageant

-no-trivial-auth

disconnect if SSH authentication succeeds trivially

若SSH正常授权,则断开连接

-hostkey keyid

manually specify a host key (may be repeated)

手动指定主机键值

-batch disable all interactive prompts

-no-sanitise-stderr don't strip control chars from standard error

-proxycmd command

use 'command' as local proxy

-unsafe allow server-side wildcards (DANGEROUS)

-sftp force use of SFTP protocol

-scp force use of SCP protocol

-sshlog file

-sshrawlog file

log protocol details to a file

-logoverwrite

-logappend

control what happens when a log file already exists

(PSCP的界面与UNIX的SCP命令非常相似)

5.2.1基本用法

从远程服务器接收一个(或多个)文件:

pscp [options] [user@]host:source target

例如,用户fred,从服务器上拷贝 /etc/hosts 文件到本地的c:\temp\example-hosts.txt,可以输入:

pscp fred@:/etc/hosts c:\temp\example-hosts.txt

发送一个(或多个)文件到远程服务器:

pscp [options] source [source...] [user@]host:target

例如,用户fred,发送本地文件c:\documents\foo.txt到服务器上的 /tmp/foo,可以输入:

pscp c:\documents\foo.txt fred@:/tmp/foo

你也可以用通配符*拷贝多个文件到目录中:

pscp c:\documents\*.doc fred@:docfiles

pscp fred@:source/*.c c:\source

然而,在第二个例子中(在远程文件中使用通配符),可能会出现这样的警告信息:“警告:远程主机试图写 “terminal.c”文件。如果你是输入的通配符,请升级到SSH-2或者用参数“-unsafe”。不允许对此文件更名。”

(这主要是基于安全方面的原因,不赘述)

只要有可能,PSCP将先尝试用SFTP协议(SSH-2的一部分)来处理,这样就可避免这个安全缺陷,也不会看到这个警告信息了。(若可以,你也可以强制使用SFTP协议,用参数-sftp,详见section5.2.2.6)

如果你非要在SSH-1下用通配符,在命令行上加上参数-unsafe,如下例:

pscp -unsafe fred@:source/*.c c:\source

这将忽视这个警告信息,并开始文件传输。然而,这个参数选项让远程服务器能写任何文件到你的目标目录。只有在你信任远程服务器的管理员,没有恶意(或服务器没有被恶意的人破坏)情况下,你才能使用这个参数。替代方案,你可以建一个新的空目录,来下载文件。

5.2.1.1用户(名)

即远程服务器的登录名。如果省略,并且主机名是一个PuTTY中保存的会话(设置),则PSCP就会用被保存的会话中的用户名。除此之外,PSCP会试着用本地windows的用户名。

5.2.1.2主机(名)

即远程主机名,或一个PuTTY保存的会话名(即简略形式)。在后者情况下,会话设置了主机名、端口、密码、用户名。

5.2.1.3源文件

一个或多个源文件。可以用通配符。用哪一种通配符形式取决于操作系统。若从windows系统向UNIX系统拷贝文件,应该遵循windows通配符的语法(*.*),但若从UNIX系统向windows系统拷贝文件,则用UNIX的通配符(*)。

若源文件是一个远程文件,你又没有指定一个完整的路径(UNIX中,路径用反斜杠 /),路径就会基于你的主目录(home)来确定。

5.2.1.4 目标文件

当你从远程服务器上拷贝文件到本机时,你可能只是想就拷贝到当前目录(即不重新指定文件名),那么,指定目标文件为 . 即可,例如:

pscp fred@:/home/tom/.emacs .

拷贝远程服务器上的/home/tom/.emacs到当前目录。

若目标文件是远程文件,你又没有指定完整的路径,那么目录就会基于你的主目录(home)来确定。

5.2.2选项(参数)

(本文中,“参数”和“选项”均为同一个意思,可互换。)

除了极个别在文件传输中无用的参数,PuTTY中的参数大多数都可以在PSCP中使用,详见3.11.3(PSCP不支持的参数已被明确标示出来)。PSCP也有自己专有的参数,下面的部分会介绍。

5.2.2.1-ls显示远程文件

命令行中加了选项 -ls,则没有文件会被传输,而是远程文件会被列出来。只要指定一个远程主机名和目录名即可,例如:

pscp -ls fred@:dir1

5.2.2.2-p 保留文件属性

默认状态下,用PSCP拷贝文件时,会变更时间戳,用参数-p则会保留原文件的时间戳。

(如,远程文件是1234年5月6日建立或修改的,则拷贝到本地时,则会变成拷贝时的时间)

5.2.2.3-q 安静模式,不要显示进度

默认状态下,PSCP显示文件传输的进度:

mibs.tar | 168 kB | 84.0 kB/s | ETA: 00:00:13 | 13%

上面一行,从左到右,依次显示的是:文件名、已传输的文件尺寸、传输速度、剩余传输时间、已传输文件百分比。加了参数-q,则不会显示这些信息。

5.2.2.4-r (递归)拷贝目录

默认状态下,PSCP将只拷贝文件。你指定的任何目录及其下面的文件都被跳过。选项-r告诉PSCP拷贝你指定的目录以及其中的文件。这个参数可以让你在主机间传送整个目录结构。

5.2.2.5-batch 避免交互式提示

若用了参数-batch,则PSCP在建立连接时,不会给出任何交互式提示。如果主机名无效,则连接会中断,而不会问你是否试一下其他的连接。

5.2.2.6-sftp,-scp 强制使用指定的传输协议

如上面5.2.1中提到的,有两种SSH的文件传输协议。尽管PSCP的名字更与SCP相近(像其他的那些看上去类似SCP的客户端软件一样),但它其实两种协议都能用。

旧的SCP协议没有一个规范的写法,并留下了许多坑。虽然这种协议比较简单,比如各种平台的通配符的写法都支持,但也导致了如5.2.1中描述的问题。

新的SFTP协议,通常在SSH-2服务器上使用,以一种独立的方式对各自写法进行了规范,比如通配符的写法。这就使各种写法在各平台都是一致的,更符合书写和自动化,并避免了通配符的安全问题。

通常,PSCP先用SFTP协议,实在不能用,才用SCP协议。

选项-SCP强制使用SCP协议,用不起,则退出。

选项-PSCP强制使用SFTP协议,用不起,则退出。使用SSH-1的服务器,根据其设置决定是否能用-PSCP选项。

5.2.2.7 -no-sanitise-stderr不删除错误信息

参数-no-sanitise-stderr将服务器的标准错误码原封不动的发送过来,包括一些控制字符,并且是一些彩色字符。这可能有用,但也可能把屏幕弄得五花八门。更多的讨论,详见7.2.3.5。

5.2.3返回值

PSCP可以返回错误码,若文件正常传输,则返回0。你可以用一个像下面这样的批处理文件来进行测试:

pscp file*.* user@hostname:

if errorlevel 1 echo There was an error

5.2.4使用公钥

与PuTTY一样,PSCP可以用公钥来替代密码。有三个方法:

第一种,PSCP用在PuTTY中保存的会话(设置)来替代主机名(详见5.2.1.2),可以这样操作:

运行PuTTY,并创建一个会话(设置)指定你的个人密码文件,也可同时指定一个登录的用户名。在PSCP中,你用保存的会话(设置)名来代替主机名,输入:PSCP 设置名:文件名 本地文件名

第二种,使用参数-i,你能在命令行中加上个人密码文件,详见3.11.3.18。

第三种,PSCP可以用Pageant(详第9章)的授权,这样做:

先运行Pageant,并保证个人密码保存在其中。在PSCP中指定一个用户名和主机名。PSCP将自动搜寻Pageant并用其中的密码。

更多的公钥信息,详见第8章。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。