scp命令

通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认,如果需要在主机上做一个自动获取文件的shell脚本,这样显然是不行的,通过下面的设置,可以不需要输入密码,直接获到文件。
这里假设主机A用来获到主机B的文件。

  1. 在主机A上执行如下命令来生成配对密钥:
    ssh-keygen -t rsa

    显示信息如下:

    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Created directory ‘/root/.ssh’.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    45:13:ec:31:f9:3d:25:54:7b:5f:03:40:ba:e9:76:cd root@bindiry-ubuntu

    按三次回车。

  2. 为 ~/.ssh 目录设置权限:
    chmod -R 755 .ssh

    将 .ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为 authorized_keys ,同样给该目录设置权限。

  3. 到主机A中执行命令和主机B建立信任,例(假设主机B的IP为:192.168.0.3):
    scp ~/.ssh/id_rsa.pub 192.168.0.3:/root/.ssh/authorized_keys
  4. 下面就可以用scp命令不需要密码来获取主机B的文件了

附scp命令说明:

scp – 安全复制 (远程文件复制工具)
语法
scp [-1245BCpqrv] [-c cipher] [F ssh_config] [-I identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:] file1 […] [[suer@]host2:]file2
说明
Scp在主机间复制文件。他使用 ssh(1)作为数据传输。而且用同样认证和安全性。 scp将在认证中请求输入密码所有的文件可能需要服务器和用户的特别描述来指明文件将被复制到/从某台服务器。两个远程登录的服务器间的文件复制是允许的。
选项
-1 强制scp 用协议1
-2 强制scp 用协议2
-4 强制scp用IPV4的网址
-6 强制scp用IPV6的网址
-B 选择批处理模式(防止输入密码)
-C 允许压缩。 标注-C到ssh(1)来允许压缩
-c cipher 选择cipher来加密数据传输。这个选项直接传递到ssh(1)
-F ssh_config 设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1)
-i identity_file 选择被RSA认证读取私有密码的文件。这个选项可以直接被传递到ssh(1)
-l limit 限制传输带宽,也就是速度 用Kbit/s的速度
-o ssh_option 可以把ssh_config中的配置格式传到ssh中。这种模式对于说明没有独立的scp文件中断符的scp很有帮助。
-P port 指定连接远程连接端口。注意这个选项需要写成大写的模式。因为-p已经早保留了次数和模式
-S program 指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-p 指定修改次数,连接次数,还有对于原文件的模式
-q 把进度参数关掉
-r 递归的复制整个文件夹
-S program 指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-V 冗余模式。 让 scp 和 ssh(1) 打印他们的排错信息, 这个在排错连接,认证,和配置中非常有用。

### SCP 命令使用指南及常见问题解决方案 #### 一、SCP 命令概述 SCP(Secure Copy Protocol)是一个基于 SSH 的文件传输工具,主要用于在本地和远程服务器之间复制文件。它提供了类似于 `cp` 命令的功能,但支持跨网络的安全数据传输[^3]。 核心命令语法如下: ```bash scp [选项] 源路径 目标路径 ``` #### 二、常用选项详解 以下是 SCP 命令的一些重要选项及其作用: - **`-r`**: 递归复制整个目录。 - **`-P`**: 指定目标主机的 SSH 端口号,默认为 22。 - **`-C`**: 启用压缩机制以加快大文件的传输速度。 - **`-q`**: 静默模式,不显示进度条或其他信息。 - **`-v`**: 显示详细的调试信息,便于诊断问题。 #### 三、典型应用场景 ##### 1. 将本地文件上传至远程服务器 假设需要将 `/home/user/localfile.txt` 文件上传到远程服务器的 `/var/www/html/` 目录下,可以执行以下命令: ```bash scp /home/user/localfile.txt user@remote_host:/var/www/html/ ``` 此处 `user@remote_host` 表示远程用户的登录名和主机地址。 ##### 2. 从远程服务器下载文件到本地 如果想把远程服务器上的某个文件拉取下来保存在当前目录中,则应这样操作: ```bash scp user@remote_host:/path/to/remotefile ./localdestination ``` ##### 3. 复制整个目录结构 为了拷贝一个名为 `mydir` 的完整文件夹到另一台机器上去,记得加上 `-r` 参数表示递归处理子项: ```bash scp -r /source/directory user@target_machine:/destination/folder ``` #### 四、高级特性与最佳实践 根据实际需求调整性能参数能显著提升效率。例如启用压缩功能减少带宽消耗特别适合大规模迁移作业时考虑加入 `-C` 开关[^2]: ```bash scp -Cr source_directory user@server:/backup/location ``` 另外值得注意的是,尽管默认情况下会继承系统的身份验证方式(如公钥交换),但如果遇到特殊情形仍可通过显式提供密钥材料来增强灵活性: ```bash scp -i ~/.ssh/id_rsa_custom private_key_file user@host:/some/path ``` #### 五、故障排除技巧 当面对各种异常状况不知所措之际,请参照下面列举出来的几类典型情况寻找对应措施[^4]: 1. 如果收到类似 “Permission denied (publickey,password)” 错误消息,确认已正确设置了 SSH 密码或者关联好了相应的私钥文件; 2. 当提示找不到指定的目标位置时候,仔细核对输入路径是否存在拼写失误以及是否有足够的读写权限; 3. 对于超时断开连接之类现象,适当延长 ServerAliveInterval 时间间隔值或许有所帮助。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值