最近买了台轻量服务器,打算部署一些 node 服务,有了向远程服务器传输文件的需求,经过了解,有 ftp 的方法也有通过命令scp直接传输的方法,经过学习,了解了 scp 的基本使用,作此记录,以备查询。

scp 是 secure copy 的缩写,相当于 cp 命令 + SSH。它的底层是 SSH 协议,默认端口是 22,相当于先使用 ssh 命令登录远程主机,然后再执行拷贝操作。

scp 主要用于以下三种复制操作。

本地复制到远程。 远程复制到本地。 两个远程系统之间的复制。 使用 scp 传输数据时,文件和密码都是加密的,不会泄漏敏感信息。

  1. 上传本地文件至服务器
scp /path/filename username@servername:/path #(远程目标目录,必须存在且有读写权限)
  1. 上传本地目录至服务器
scp -r local_dir username@servername:remote_dir

# 上传或下载的目标为目录,需要加 -r scp 会进行递归
  1. 从服务器上下载文件
scp username@servername:/path/filename /Users/mac/Desktop #(本地目标目录)
  1. 从服务器上下载目录
scp -r username@servername:/root/ /Users/mac/Desktop #(本地目标目录)

SOME TIPS: ( Ubuntu Server 20.04 LTS 64bit )

出现 Permission denied, please try again 的错误

  • 远程端修改 sshd_config 文件
sudo vim /etc/ssh/sshd_config

# 注释掉 PermitRootLogin prohibit-password
# 添加 PermitRootLogin yes
  • 重启 ssh 服务
sudo /etc/init.d/ssh restart
  • 如果提示权限问题,可根据是上传还是下载,更改相应路径权限
sudo chmod 777 /path

# path 更改为更改为对应操作路径