OpenSSH中SCP协议实现相关程序

来源:互联网 发布:网络交易平台怎么做 编辑:程序博客网 时间:2024/04/30 03:18

一、含义

SCP协议包含SCP Client和SCP Server,OpenSSH中的scp程序既可作为SCP Client,也可作为SCP Server。作为SCP Server的scp程序的运行通常是由SSH Server(sshd)调用触发。我们最常用的是将scp程序作为SCP Client运行。接下来介绍将scp程序作为SCP Client运行中的常用用法。

二、常用用法

2.1、本地机器与远端机器进行文件的传输

2.1.1、从本地机器向远端机器传输文件

1)命令如下

scp localfilepath -i identify_file -P port user@remoteHost:remotefilepath

2)选项含义

-i:选项值被直接传递给底层调用的ssh程序,作为ssh程序中“-i”选项的值-P:选项值被直接传递给底层调用的ssh程序,作为ssh程序中“-p”选项的值user:选项值被直接传递给底层调用的ssh程序,作为ssh程序中“-l”选项的值remoteHost:被直接传递给底层调用的ssh程序,等价于ssh程序中的“hostname”

以上ssh程序选项的含义介绍可见《OpenSSH——ssh》
3)简化命令
由《OpenSSH——ssh_config》可知,ssh程序的选项值除了来自于命令行选项值,还可来自于“ssh_config”文件。因此我们可以在“ssh_config”文件中配置好scp程序要传递给ssh程序的选项值,从而简化scp命令得到:

scp localfilepath RemoteHostAlias:remotefilepath

以“~/.ssh/config”文件为例,其中增加的配置内容如下:

Host RemoteHostAlias #指定配置匹配条件      HostName remoteHost    User user    Port port    IdentityFile identify_file 

2.1.2、从远端机器复制文件传输到本地机器

使用简化命令,命令如下:

scp RemoteHostAlias:remotefilepath localfilepath 

2.2、远端机器与远端机器进行文件的传输

在本情形中,在scp程序中需要指定两个远端机器,如果采用“通过scp程序中的‘-i,-P,user,remoteHost’的选项值来配置底层调用ssh程序的相关值”的方式,需要两份“-i,-P,user,remoteHost”选项,这会导致失败。
因而在本情形中,最好采用“ssh_config”文件配置选项值的方式。

以远端机器1向远端机器2传输文件为例进行说明,而在远端机器1向远端机器2传输文件的情形中,又有两种不同情况,分别是:以本地机器为中转和不以本地机器为中转。

2.2.1、以本地机器为中转

1)命令如下

scp -3 remoteHost1:filepath1 remoteHost2:filePath2

2)选项含义
-3:该选项表示在远端机器之间传输文件的过程中,使用本地机器为中转
3)其他
在本情形中,要在本地机器的“ssh_config”文件中,配置好“remoteHost1”和“remoteHost2”对应的“HostName,User,Port,IdentityFile”选项值

2.2.2、不以本地机器为中转

1)命令如下

scp remoteHost1:filepath1 remoteHost2:filePath2

2)其他
在本情形中,要在本地机器的“ssh_config”文件中,配置好“remoteHost1”对应的“HostName,User,Port,IdentityFile”选项值,并且要在“remoteHost1”对应的远端机器的“ssh_config”文件中,配置好“remoteHost2”对应的“HostName,User,Port,IdentityFile”选项值

三、其他

3.1、“-r”选项

加上“-r”选项,表示递归复制传输目录内容


参考文献:
[1]man scp

0 0