自己在服务器上,scp如何把服务器文件传到本地?

自己在服务器上,如何传送一个文件到本地?
网上查到的教程都是从服务器到服务器,和自己在本地和服务器双向传输,那么如果自己已经登录到服务器上,怎么传文件到本地呢?
换句话说,如何在服务器上表示本地路径?

阅读 5.4k
1 个回答
抱歉,我没认真看题,理解错了你的意思。

往往对服务器的访问网络是单向的,即通过本地可以连接服务器,而服务器无法直接连接本地。(如果服务器能直接连接本地,则使用scp命令scp /filepath/filename <local-user>@<local-ip>:/filepath/filename拷贝即可)

最方便的办法是使用ssh隧道,关于隧道请参考实战 SSH 端口转发SSH TUNNEL.
使用过程如下:

  1. 在本地机器使用如下命令创建隧道:

    ssh -f -N -R <服务器IP>:<服务器监听端口>:<本机IP>:<本机SSH服务端口> <服务器用户名>@<服务器IP>
    //示例:ssh -f -N -R 192.18.6.7:22222:10.1.101.143:22 test@192.18.6.7
    • 服务器监听端口: 隧道启动后在服务器中会启动一个监听端口,直接和本地ssh服务连接,因此该端口必须在服务端不存在(示例中192.18.6.7为我的服务器IP地址,22222为我申请ssh隧道服务器端的监听端口)
    • 本机IP:可以使用localhost(示例中10.1.101.143为我的本机ip地址)
    • 本机SSH服务端口: 本地机器必须存在sshd服务,同时端口最好全部监听,调整好/etc/ssh/sshd_config中的ListenAddress为 0.0.0.0;如果是mac,确保sharing中的Remote Login已开启; 如果是windows,参考freessd 下载
  2. 在服务其中执行文件拷贝

    scp -r -P <服务器监听端口> /filepath/filename <本地机器用户名>@localhost:/filepath/filename
    //示例:scp -r -P 22222 avro@localhost test-dir Reven@localhost:/tmp
    • 服务器监听端口:为步骤1中的<服务器监听端口>
    • 本地机器用户名:为步骤1中的本地机器登录用户名(示例中avro为我本机ip地址)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题