在Ubuntu系统中,通过SSH进行文件传输通常有两种主要方法:SCP(Secure Copy Protocol)和SFTP(SSH File Transfer Protocol)。以下是这两种方法的简要说明和示例:
SCP是一种基于SSH的文件传输协议,可以在本地主机和远程主机之间安全地复制文件。
从本地传输到远程服务器:
scp /path/to/local/file username@remote_host:/path/to/remote/directory
例如,将本地的example.txt文件传输到远程服务器的/home/username/documents目录:
scp example.txt username@remote_host:/home/username/documents
从远程服务器传输到本地:
scp username@remote_host:/path/to/remote/file /path/to/local/directory
例如,将远程服务器上的example.txt文件传输到本地的/home/localuser/documents目录:
scp username@remote_host:/home/username/documents/example.txt /home/localuser/documents
传输整个目录:
scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory
例如,将本地的myfolder目录及其内容传输到远程服务器的/home/username/documents目录:
scp -r myfolder username@remote_host:/home/username/documents
使用非标准SSH端口:
如果远程服务器使用的是非标准SSH端口,可以使用-P选项指定端口号:
scp -P port_number /path/to/local/file username@remote_host:/path/to/remote/directory
保持文件的修改时间和访问时间:
使用-p选项可以在传输过程中保持文件的修改时间和访问时间:
scp -p /path/to/local/file username@remote_host:/path/to/remote/directory
加密并压缩文件:
使用-C选项可以在传输过程中加密并压缩文件:
scp -C /path/to/local/file username@remote_host:/path/to/remote/directory
```。
### SFTP命令
SFTP是一种基于SSH的文件传输协议,提供了一个交互式的文件传输界面。
**启动SFTP会话:**
```bash
sftp username@remote_host
常用SFTP命令:
ls:列出远程目录中的文件和目录cd:更改远程目录get:从远程主机下载文件到本地主机put:从本地主机上传文件到远程主机mkdir:在远程主机上创建目录rmdir:删除远程主机上的空目录exit 或 bye:退出SFTP会话。为了在传输文件时无需输入密码,可以使用SSH密钥认证。以下是生成公私钥对并将公钥添加到远程服务器上的authorized_keys文件中的步骤:
ssh-keygen -t rsa
~/.ssh/id_rsa.pub文件中的内容拷贝到远程服务器上的~/.ssh/authorized_keys文件中。除了命令行工具,还可以使用图形界面的工具进行文件传输,例如:
通过以上方法,你可以在Ubuntu系统中方便地通过SSH进行文件传输。