Linux 命令 - scp 与 nc

1 命令简介

scp 是基于 ssh 远程登陆的在客户端与远程端之间进行文件传输的命令。其用法与 cp 类似,故这里不再赘述。

当远端没有配置成 ssh 服务器时,就不能用 scp 命令了。此时可以使用 nc 命令,它是基于 TCP/UDP 协议的。除此之外,它是跨平台的。只要操作系统安装了 nc 工具包均可使用,与操作系统无关(因为是采用网络传输,而不会直接访问操作系统的文件系统等)。

一般用 nc 命令进行文件传输与端口扫描。

2 文件传输

2.1 一般用法

在远端执行设置监听端口并打开: nc -l 端口号

在本地指定远端IP和端口号,建立连接并传送数据: nc 远端IP 端口号

然后,本地将标准输入的数据会被传送到远端的标准输出。

2.2 传送文件

如果要传送文件,则可采用标准输入输出重定向的方式进行。

在远端执行如下命令: nc -l 端口号 >output

在本地执行: nc 远端IP 端口号 <input

2.3 传送目录或多个文件

在远端打开监听端口号,然后将 nc 命令收到的数据通过管道传递给 tar 命令的标准输入,并进行释放。 nc -l 端口号 | tar -xf - -C 释放的路径

可以在本地先用 tar 命令进行归档,并传给标准输出。然后采用管道的形式将其传给 nc 命令的标准输入。 tar -cf - 源文件路径1 源文件路径2 ... | nc 远端IP 端口号

当然,还可以通过指定 -z 参数进行压缩与解压缩。

2.4 保持监听状态

默认情况下,当连接断开后,远端的进程会终止。当要多次从本地传送数据到远端时,这样就会多有不便。

可以指定 -k 参数,使得连接断开后,远端的进程不会终止,仍然处于监听状态: nc -lk 端口号

3 使用 UDP

默认情况下是使用的 TCP,可以通过 -u 参数指定使用 UDP。

远端: nc -ul 端口号

本地: nc -u 远端IP 端口号

4 端口扫描

当在本地查看远端上哪些端口处于监听状态时,可以指定 -z 参数: nc -zv 远端IP 端口号m-端口号n


Reference