📄 pscp.but
字号:
\versionid $Id: pscp.but,v 1.1.1.2.2.2 2004/12/29 11:32:20 pekangas Exp $\#FIXME: Need examples\C{pscp} Using PSCP to transfer files securely\i{PSCP}, the PuTTY Secure Copy client, is a tool for transferring filessecurely between computers using an SSH connection.If you have an SSH 2 server, you might prefer PSFTP (see \k{psftp})for interactive use. PSFTP does not in general work with SSH 1servers, however.\H{pscp-starting} Starting PSCPPSCP is a command line application. This means that you cannot justdouble-click on its icon to run it and instead you have to bring up a\i{console window}. With Windows 95, 98, and ME, this is called an\q{MS-DOS Prompt} and with Windows NT and 2000 it is called a\q{Command Prompt}. It should be available from the Programs sectionof your Start Menu.To start PSCP it will need either to be on your \i{\c{PATH}} or in yourcurrent directory. To add the directory containing PSCP to your\c{PATH} environment variable, type into the console window:\c set PATH=C:\path\to\putty\directory;%PATH%This will only work for the lifetime of that particular consolewindow. To set your \c{PATH} more permanently on Windows NT, use theEnvironment tab of the System Control Panel. On Windows 95, 98, andME, you will need to edit your \c{AUTOEXEC.BAT} to include a \c{set}command like the one above.\H{pscp-usage} PSCP UsageOnce you've got a console window to type into, you can just type\c{pscp} on its own to bring up a usage message. This tells you theversion of PSCP you're using, and gives you a brief summary of how touse PSCP:\c Z:\owendadmin>pscp\c PuTTY Secure Copy client\c Release 0.XX\c Usage: pscp [options] [user@]host:source target\c pscp [options] source [source...] [user@]host:target\c pscp [options] -ls [user@]host:filespec\c Options:\c -p preserve file attributes\c -q quiet, don't show statistics\c -r copy directories recursively\c -v show verbose messages\c -load sessname Load settings from saved session\c -P port connect to specified port\c -l user connect with specified username\c -pw passw login with specified password\c -1 -2 force use of particular SSH protocol version\c -C enable compression\c -i key private key file for authentication\c -batch disable all interactive prompts\c -unsafe allow server-side wildcards (DANGEROUS)\c -V print version information\c -sftp force use of SFTP protocol\c -scp force use of SCP protocol(PSCP's interface is much like the Unix \c{scp} command, if you'refamiliar with that.)\S{pscp-usage-basics} The basicsTo receive (a) file(s) from a remote server: \c pscp [options] [user@]host:source targetSo to copy the file \c{/etc/hosts} from the server \c{example.com} asuser \c{fred} to the file \c{c:\\temp\\example-hosts.txt}, you would type:\c pscp fred@example.com:/etc/hosts c:\temp\example-hosts.txtTo send (a) file(s) to a remote server: \c pscp [options] source [source...] [user@]host:targetSo to copy the local file \c{c:\\documents\\foo.txt} to the server\c{example.com} as user \c{fred} to the file \c{/tmp/foo} you wouldtype:\c pscp c:\documents\foo.txt fred@example.com:/tmp/fooYou can use wildcards to transfer multiple files in eitherdirection, like this:\c pscp c:\documents\*.doc fred@example.com:docfiles\c pscp fred@example.com:source/*.c c:\sourceHowever, in the second case (using a wildcard for multiple remotefiles) you may see a warning saying something like \q{warning:remote host tried to write to a file called 'terminal.c' when werequested a file called '*.c'. If this is a wildcard, considerupgrading to SSH 2 or using the '-unsafe' option. Renaming of thisfile has been disallowed}.This is due to a fundamental insecurity in the old-style SCPprotocol: the client sends the wildcard string (\c{*.c}) to theserver, and the server sends back a sequence of file names thatmatch the wildcard pattern. However, there is nothing to stop theserver sending back a \e{different} pattern and writing over one ofyour other files: if you request \c{*.c}, the server might send backthe file name \c{AUTOEXEC.BAT} and install a virus for you. Sincethe wildcard matching rules are decided by the server, the clientcannot reliably verify that the filenames sent back match thepattern.PSCP will attempt to use the newer SFTP protocol (part of SSH 2)where possible, which does not suffer from this security flaw. Ifyou are talking to an SSH 2 server which supports SFTP, you willnever see this warning. (You can force use of the SFTP protocol,if available, with \c{-sftp} - see \k{pscp-usage-options-backend}.)If you really need to use a server-side wildcard with an SSH 1server, you can use the \c{-unsafe} command line option with PSCP:\c pscp -unsafe fred@example.com:source/*.c c:\sourceThis will suppress the warning message and the file transfer willhappen. However, you should be aware that by using this option youare giving the server the ability to write to \e{any} file in thetarget directory, so you should only use this option if you trustthe server administrator not to be malicious (and not to let theserver machine be cracked by malicious people).\S2{pscp-usage-basics-user} \c{user}The login name on the remote server. If this is omitted, and \c{host}is a PuTTY saved session, PSCP will use any username specified by that saved session. Otherwise, PSCP will attempt to use the local Windowsusername.\S2{pscp-usage-basics-host} \c{host}The name of the remote server, or the name of an existing PuTTY savedsession. In the latter case, the session's settings for hostname, portnumber, cipher type and username will be used.\S2{pscp-usage-basics-source} \c{source}One or more source files. \i{Wildcards} are allowed. The syntax ofwildcards depends on the system to which they apply, so if you arecopying \e{from} a Windows system \e{to} a UNIX system, you should use Windows wildcard syntax (e.g. \c{*.*}), but if you are copying \e{from} a UNIX system \e{to} a Windows system, you would use the wildcardsyntax allowed by your UNIX shell (e.g. \c{*}).If the source is a remote server and you do not specify a fullpathname (in UNIX, a pathname beginning with a \c{/} (slash)character), what you specify as a source will be interpreted relativeto your home directory on the remote server.\S2{pscp-usage-basics-target} \c{target}The filename or directory to put the file(s). When copying from aremote server to a local host, you may wish simply to place thefile(s) in the current directory. To do this, you should specify atarget of \c{.}. For example:\c pscp fred@example.com:/home/tom/.emacs ....would copy \c{/home/tom/.emacs} on the remote server to the current directory.As with the \c{source} parameter, if the target is on a remote serverand is not a full path name, it is interpreted relative to your homedirectory on the remote server.\S{pscp-usage-options} OptionsPSCP accepts all the general command line options supported by thePuTTY tools, except the ones which make no sense in a file transferutility. See \k{using-general-opts} for a description of theseoptions. (The ones not supported by PSCP are clearly marked.)PSCP also supports some of its own options. The following sectionsdescribe PSCP's specific command-line options.These are the command line options that PSCP accepts.\S2{pscp-usage-options-p}\c{-p} preserve file attributesBy default, files copied with PSCP are \i{timestamp}ed with the date andtime they were copied. The \c{-p} option preserves the originaltimestamp on copied files.\S2{pscp-usage-options-q}\c{-q} quiet, don't show \i{statistics}By default, PSCP displays a meter displaying the progress of thecurrent transfer:\c mibs.tar | 168 kB | 84.0 kB/s | ETA: 00:00:13 | 13%The fields in this display are (from left to right), filename, size(in kilobytes) of file transferred so far, estimate of how fast thefile is being transferred (in kilobytes per second), estimated timethat the transfer will be complete, and percentage of the file so fartransferred. The \c{-q} option to PSCP suppresses the printing ofthese statistics.\S2{pscp-usage-options-r}\c{-r} copies directories \i{recursive}lyBy default, PSCP will only copy files. Any directories you specify tocopy will be skipped, as will their contents. The \c{-r} option tellsPSCP to descend into any directories you specify, and to copy them and their contents. This allows you to use PSCP to transfer wholedirectory structures between machines.\S2{pscp-usage-options-batch}\c{-batch} avoid interactive promptsIf you use the \c{-batch} option, PSCP will never give aninteractive prompt while establishing the connection. If theserver's host key is invalid, for example (see \k{gs-hostkey}), thenthe connection will simply be abandoned instead of asking you whatto do next.This may help PSCP's behaviour when it is used in automatedscripts: using \c{-batch}, if something goes wrong at connectiontime, the batch job will fail rather than hang.\S2{pscp-usage-options-backend}\c{-sftp}, \c{-scp} force use ofparticular protocolAs mentioned in \k{pscp-usage-basics}, there are two different filetransfer protocols in use with SSH. Despite its name, PSCP (like manyother ostensible \cw{scp} clients) can use either of these protocols.The older SCP protocol does not have a written specification andleaves a lot of detail to the server platform. Wildcards are expandedon the server. The simple design means that any wildcard specificationsupported by the server platform (such as brace expansion) can beused, but also leads to interoperability issues such as with filenamequoting (for instance, where filenames contain spaces), and also thesecurity issue described in \k{pscp-usage-basics}.The newer SFTP protocol, which is usually associated with SSH 2servers, is specified in a more platform independent way, and leavesissues such as wildcard syntax up to the client. This makes it moreconsistent across platforms, more suitable for scripting andautomation, and avoids security issues with wilcard matching.Normally PSCP will attempt to use the SFTP protocol, and only fallback to the SCP protocol if SFTP is not available on the server.The \c{-scp} option forces PSCP to use the SCP protocol or quit.The \c{-sftp} option forces PSCP to use the SFTP protocol or quit.When this option is specified, PSCP looks harder for an SFTP server,which may allow use of SFTP with SSH 1 depending on server setup.\S{pscp-retval} Return valuePSCP returns an \cw{ERRORLEVEL} of zero (success) only if the fileswere correctly transferred. You can test for this in a batch file,using code such as this:\c pscp file*.* user@hostname:\c if errorlevel 1 echo There was an error\S{pscp-pubkey} Using public key authentication with PSCPLike PuTTY, PSCP can authenticate using a public key instead of apassword. There are three ways you can do this.Firstly, PSCP can use PuTTY saved sessions in place of hostnames(see \k{pscp-usage-basics-host}). So you would do this:\b Run PuTTY, and create a PuTTY saved session (see\k{config-saving}) which specifies your private key file (see\k{config-ssh-privkey}). You will probably also want to specify ausername to log in as (see \k{config-username}).\b In PSCP, you can now use the name of the session instead of ahostname: type \c{pscp sessionname:file localfile}, where\c{sessionname} is replaced by the name of your saved session.Secondly, you can supply the name of a private key file on the commandline, with the \c{-i} option. See \k{using-cmdline-identity} for moreinformation.Thirdly, PSCP will attempt to authenticate using Pageant if Pageantis running (see \k{pageant}). So you would do this:\b Ensure Pageant is running, and has your private key stored in it.\b Specify a user and host name to PSCP as normal. PSCP willautomatically detect Pageant and try to use the keys within it.For more general information on public-key authentication, see\k{pubkey}.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -