插件窝 干货文章 教你在Linux SysOps中使用SSH进行文件传输

教你在Linux SysOps中使用SSH进行文件传输

文件 remotehost username 传输 494    来源:    2025-04-11

在Linux SysOps中使用SSH进行文件传输指南

SSH (Secure Shell) 不仅是远程登录的安全协议,也是系统管理员进行安全文件传输的重要工具。以下是几种常用的SSH文件传输方法:

1. SCP (Secure Copy)

SCP是基于SSH的文件传输工具,语法类似于传统的cp命令。

基本用法:

# 从本地复制到远程
scp /path/to/local/file username@remotehost:/path/to/remote/directory

# 从远程复制到本地
scp username@remotehost:/path/to/remote/file /path/to/local/directory

# 复制整个目录(使用-r递归选项)
scp -r /local/directory username@remotehost:/remote/directory

实用选项:

  • -P port:指定SSH端口(默认为22)
  • -C:启用压缩
  • -p:保留文件修改时间、访问时间和权限
  • -q:静默模式,不显示传输进度

2. SFTP (SSH File Transfer Protocol)

SFTP提供了交互式的文件传输界面,功能比SCP更丰富。

基本用法:

# 连接到远程服务器
sftp username@remotehost

# 常用SFTP命令:
put localfile          # 上传文件
get remotefile         # 下载文件
ls                    # 列出远程目录
lls                   # 列出本地目录
cd path               # 更改远程目录
lcd path              # 更改本地目录
mkdir dirname         # 创建远程目录
exit                  # 退出

3. rsync over SSH

rsync是更高效的文件同步工具,特别适合大文件或定期备份。

基本用法:

# 本地到远程同步
rsync -avz /local/path/ username@remotehost:/remote/path/

# 远程到本地同步
rsync -avz username@remotehost:/remote/path/ /local/path/

实用选项:

  • -a:归档模式(保留权限、符号链接等)
  • -v:详细输出
  • -z:传输时压缩
  • --delete:删除目标中源没有的文件(谨慎使用)
  • --exclude:排除特定文件或目录

4. SSHFS (SSH Filesystem)

通过FUSE将远程目录挂载到本地文件系统。

安装与使用:

# 安装SSHFS(Ubuntu/Debian)
sudo apt install sshfs

# 创建挂载点
mkdir ~/remote_mount

# 挂载远程目录
sshfs username@remotehost:/remote/path ~/remote_mount

# 卸载
fusermount -u ~/remote_mount

安全最佳实践

  1. 使用密钥认证而非密码:

    ssh-keygen -t rsa -b 4096
    ssh-copy-id username@remotehost
    
  2. 限制用户权限:为文件传输创建专用账户

  3. 使用非标准端口:修改SSH默认端口(/etc/ssh/sshd_config)

  4. 禁用root登录:在sshd_config中设置PermitRootLogin no

  5. 使用防火墙:限制可访问SSH服务的IP范围

高级技巧

  1. 断点续传(使用rsync):

    rsync --partial --progress -avz largefile username@remotehost:/path/
    
  2. 带宽限制

    scp -l 1000 file username@remotehost:/path/  # 限制为1000Kbit/s
    
  3. 多文件并行传输

    parallel -j 4 scp {} username@remotehost:/path/ ::: file1 file2 file3 file4
    
  4. 通过中间跳板机传输

    scp -o ProxyJump=jumpuser@jumphost file username@targethost:/path/
    

掌握这些SSH文件传输技术将大大提高系统管理员的工作效率和安全性。