小言_互联网的博客

每天学一个 Linux 命令(60):scp

554人阅读  评论(0)

点击下方“民工哥技术之路”,选择“设为星标”

回复“1024”获取独家整理的学习资料!

昨日推荐:每天学一个 Linux 命令(59):ssh

命令简介

scp 全拼secure copy,用于不同主机之间复制文件。

scp命令常用于在Linux系统下两个不同主机之间传输文件,其功能与cp命令相似,但是不同是,cp命令只能用于在本机环境下传输或复制拷贝文件,scp命令可以跨越不同主机,而scp传输文件是加密的。

scp 它使用ssh进行数据传输,并使用与ssh相同的身份验证并提供相同的安全性,scp 会要求输入密码或其它方式以进行身份验证。

语法格式


   
  1. scp [ -12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] 
  2.     [-l limit] [-o ssh_option] [-P port] [-S program]
  3.     [[user@]host1:]file1 ... [[user@]host2:]file2
  • 源文件:需要复制的文件

  • 目标文件:格式为 user@host:filename(文件名为目标文件的名称)

选项说明


   
  1. -1  #指定使用ssh协议版本为 1
  2. -2  #指定使用ssh协议版本为 2
  3. -3  #指定两个主机之间的副本通过本地主机传输
  4. -4  #指定使用ipv4
  5. -6  #指定使用ipv6
  6. -B  #使用批处理模式
  7. -C  #使用压缩模式传输文件
  8. -F  #使用指定的ssh配置文件
  9. -i identity_file  #从指定文件中读取传输时使用的密钥文件
  10. -l  #宽带限制
  11. -o  #使用的ssh选项
  12. -P  #远程主机的端口号
  13. -p  #保留文件的最后修改时间,最后访问时间和权限模式
  14. -q  #不输出复制进度信息
  15. -r  #以递归方式复制
  16. -S program  #指定加密传输时所使用的程序
  17. -v  #显示传输过程的详细信息

应用举例

从远程服务器复制到本地服务器


   
  1. #复制文件
  2. scp root@ 192.168 .1 .2:/download/soft/nginx.tar.gz /download/soft/
  3. #复制目录
  4. scp -r root@ 192.168 .1 .2:/app/soft/mongodb /app/soft/

以mingongge用户身份将远程主机mingongge.com上的/home/mingongge/backup.tar.gz 文件传送到当前工作目录下,并将传输限制为每秒 80 KB


   
  1. scp -l  80 mingongge@mingongge.com:/home/mingongge/backup.tar.gz
  2. #也可以写成如下
  3. scp -l  80 mingongge@mingongge.com:/home/mingongge/backup.tar.gz ./

使用指定的端口号传输文件

scp -P 9999 root@192.168.1.2:/download/soft/nginx.tar.gz /download/soft/

查看详细的传输过程


   
  1. [root@centos7 ~]# scp -v root@ 192.168 .1 .100:/root/nginxWebUI -1.3 .5.jar  /root/download/
  2. Executing: program /usr/bin/ssh host  192.168 .1 .100, user root, command scp -v -f /root/nginxWebUI -1.3 .5.jar
  3. OpenSSH_7 .4p1, OpenSSL  1.0 .2k-fips   26 Jan  2017
  4. debug1: Reading configuration data /etc/ssh/ssh_config
  5. debug1: /etc/ssh/ssh_config line  58: Applying options  for *
  6. debug1: Connecting to  192.168 .1 .100 [ 192.168 .1 .100] port  22.
  7. debug1: Connection established.
  8. debug1: permanently_set_uid:  0/ 0
  9. debug1: key_load_public: No such file or directory
  10. debug1: identity file /root/.ssh/id_rsa  type  -1
  11. debug1: key_load_public: No such file or directory
  12. debug1: identity file /root/.ssh/id_rsa-cert  type  -1
  13. debug1: key_load_public: No such file or directory
  14. debug1: identity file /root/.ssh/id_dsa  type  -1
  15. debug1: key_load_public: No such file or directory
  16. debug1: identity file /root/.ssh/id_dsa-cert  type  -1
  17. debug1: key_load_public: No such file or directory
  18. debug1: identity file /root/.ssh/id_ecdsa  type  -1
  19. debug1: key_load_public: No such file or directory
  20. debug1: identity file /root/.ssh/id_ecdsa-cert  type  -1
  21. debug1: key_load_public: No such file or directory
  22. debug1: identity file /root/.ssh/id_ed25519  type  -1
  23. debug1: key_load_public: No such file or directory
  24. debug1: identity file /root/.ssh/id_ed25519-cert  type  -1
  25. debug1: Enabling compatibility mode  for protocol  2.0
  26. debug1: Local version  string SSH -2.0-OpenSSH_7 .4
  27. debug1: Remote protocol version  2.0, remote software version OpenSSH_7 .4
  28. debug1: match: OpenSSH_7 .4 pat OpenSSH* compat  0x04000000
  29. debug1: Authenticating to  192.168 .1 .100: 22 as  'root'
  30. debug1: SSH2_MSG_KEXINIT sent
  31. debug1: SSH2_MSG_KEXINIT received
  32. debug1: kex: algorithm: curve25519-sha256
  33. debug1: kex: host key algorithm: ecdsa-sha2-nistp256
  34. debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
  35. debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
  36. debug1: kex: curve25519-sha256 need= 64 dh_need= 64
  37. debug1: kex: curve25519-sha256 need= 64 dh_need= 64
  38. debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
  39. debug1: Server host key: ecdsa-sha2-nistp256 SHA256:GqOqgdhVZyEtg/wSM8l5YB+Y6GO8K3Ii7OFsKW9R2n0
  40. The authenticity of host  '192.168.1.100 (192.168.1.100)' can 't be established.
  41. ECDSA key fingerprint is SHA256:GqOqgdhVZyEtg/wSM8l5YB+Y6GO8K3Ii7OFsKW9R2n0.
  42. ECDSA key fingerprint is MD5:cc:4b:7d:b6:59:0f:77:83:a9:a5:32:70:4e:87:0d:41.
  43. Are you sure you want to continue connecting (yes/no)? yes
  44. Warning: Permanently added ' 192.168 .1 .100 ' (ECDSA) to the list of known hosts.
  45. debug1: rekey after 134217728 blocks
  46. debug1: SSH2_MSG_NEWKEYS sent
  47. debug1: expecting SSH2_MSG_NEWKEYS
  48. debug1: SSH2_MSG_NEWKEYS received
  49. debug1: rekey after 134217728 blocks
  50. debug1: SSH2_MSG_EXT_INFO received
  51. debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
  52. debug1: SSH2_MSG_SERVICE_ACCEPT received
  53. debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
  54. debug1: Next authentication method: gssapi-keyex
  55. debug1: No valid Key exchange context
  56. debug1: Next authentication method: gssapi-with-mic
  57. debug1: Unspecified GSS failure.  Minor code may provide more information
  58. No Kerberos credentials available (default cache: KEYRING:persistent:0)
  59. debug1: Unspecified GSS failure.  Minor code may provide more information
  60. No Kerberos credentials available (default cache: KEYRING:persistent:0)
  61. debug1: Next authentication method: publickey
  62. debug1: Trying private key: /root/.ssh/id_rsa
  63. debug1: Trying private key: /root/.ssh/id_dsa
  64. debug1: Trying private key: /root/.ssh/id_ecdsa
  65. debug1: Trying private key: /root/.ssh/id_ed25519
  66. debug1: Next authentication method: password
  67. root@192.168.1.100's password: 
  68. debug1: Authentication succeeded (password).
  69. Authenticated to  192.168 .1 .100 ([ 192.168 .1 .100]: 22).
  70. debug1: channel  0new [client-session]
  71. debug1: Requesting no-more-sessions@openssh.com
  72. debug1: Entering interactive session.
  73. debug1: pledge: network
  74. debug1: client_input_global_request: rtype hostkeys -00@openssh.com want_reply  0
  75. debug1: Sending environment.
  76. debug1: Sending env LANG = en_US.UTF -8
  77. debug1: Sending command: scp -v -f /root/nginxWebUI -1.3 .5.jar
  78. Sending file modes: C0644  36196329 nginxWebUI -1.3 .5.jar
  79. Sink: C0644  36196329 nginxWebUI -1.3 .5.jar
  80. nginxWebUI -1.3 .5.jar                  100%    35MB   12.1MB/s    00: 02   
  81. debug1: client_input_channel_req: channel  0 rtype exit-status reply  0
  82. debug1: client_input_channel_req: channel  0 rtype eow@openssh.com reply  0
  83. debug1: channel  0: free: client-session, nchannels  1
  84. debug1: fd  0 clearing O_NONBLOCK
  85. debug1: fd  1 clearing O_NONBLOCK
  86. Transferred: sent  12604, received  36237992 bytes, in  4.3 seconds
  87. Bytes per second: sent  2916.1, received  8384212.5
  88. debug1: Exit status  0

通过上述过程信息,可以知道scp传输文件的整个过程是什么样的,也可以明白一些原理。

每天学一个 Linux 命令(57):cal

每天学一个 Linux 命令(58):telnet

推荐阅读 点击标题可跳转

再见 FTP/SFTP!下一代文件传输利器 Croc 来了!

比 ELK 更轻量的企业级日志平台后起之秀 Graylog!

运维请务必收藏!Nginx 五大常见应用场景

Windows 10 要成绝唱了!!!

CentOS 搭建 Vsftpd 服务,一次性成功,收藏了!

又一款 Nginx 管理可视化神器!配置、监控一条龙

k8s 日志收集的那些套路

Systemd 进程管理工具实战教程

Docker 数据管理介绍


转载:https://blog.csdn.net/mingongge/article/details/114696175
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场