linux下scp的使用

本文介绍如何通过SSH密钥实现免密码登录,并利用SCP命令进行文件的安全传输。包括生成SSH密钥对、配置授权密钥及使用SCP命令的具体操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例如:
copy 本地的档案到远程的机器上
scp /etc/lilo.conf k@net67.ee.oit.edu.tw:/home/k
会将本地的 /etc/lilo.conf 这个档案 copy 到 net67.ee.oit.edu.tw,使用者 k 的家目录下。
copy远程机器上的档案到本地来
scp k@net67.ee.oit.edu.tw:/etc/lilo.conf /etc
会将 net67.ee.oitdu.tw 中 /etc/lilo.conf 档案 copy 到本地的 /etc 目录下。
保持从来源 host 档案的属性
scp –p k@net67.ee.tw:/etc/lilo.conf /etc
在此必须注意使用者的权限是否可读取远程上的档案,若想知道更多关于 scp 的使用方法,可去看看 scp 的使用手册。
ssh-keygen
产生公开钥 (pulib key) 和私人钥 (private key),以保障 ssh 联机的安性, 当 ssh 连 shd 服务器,会交换公开钥上,系统会检查 /etc/ssh_know_hosts 内储存的 key,如果找到客户端就用这个 key 产生一个随机产生的session key 传给服务器,两端都用这个 key 来继续完成 ssh 剩下来的阶段。

它会产生 identity.pub、identity 两个档案,私人钥存放于identity,公开钥 存放于 identity.pub 中,接下来使用 scp 将 identity.pub copy 到远程机器的家目录下.ssh下的authorized_keys。 .ssh/authorized_keys(这个 authorized_keys 档案相当于协议的 rhosts 档案), 之后使用者能够不用密码去登入。RSA的认证绝对是比 rhosts 认证更来的安全可靠。
执行:
scp identity.pub k@linux1.ee.oit.edu.tw:.ssh/authorized_keys

若在使用 ssh-keygen 产生钥匙对时没有输入密码,则如上所示不需输入密码即可从 net67.ee.oit.edu.tw 去登入 linux1.ee.oit.edu.tw。在此,这里输入的密码可以跟帐号的密码不同,也可以不输入密码。

### Linux scp命令使用教程 #### 什么是scp? `scp` 是 `secure copy` 的缩写,在 Linux 系统中是一个基于 SSH 登录的安全远程文件拷贝工具。它可以在本地计算机和远程主机之间或者两个远程主机之间安全地复制文件或目录。 --- #### 基本语法 ```bash scp [可选参数] [源路径] [目标路径] ``` 其中: - `[源路径]` 表示要复制的文件或目录。 - `[目标路径]` 表示文件或目录的目标位置。 --- #### 可选参数详解 | 参数 | 功能描述 | |------|----------| | `-4` | 强制 `scp` 使用 IPv4 地址[^1]。 | | `-6` | 强制 `scp` 使用 IPv6 地址[^1]。 | | `-p` | 保留原文件的时间戳(修改时间、访问时间和权限)[^2]。 | | `-r` | 递归复制整个目录及其子目录的内容[^3]。 | | `-P <port>` | 指定用于数据传输的端口号,默认为 22。 | 其他高级选项包括但不限于: - `-c <cipher>`:指定加密算法,例如 AES 或 DES[^2]。 - `-i <identity_file>`:指定身份验证所需的私钥文件。 - `-l <limit>`:限制带宽,单位为 Kbit/s。 - `$PWD`:简化路径书写,表示当前工作目录[^4]。 --- #### 实际应用场景 ##### 1. **从本地复制到远程** 将本地文件 `/home/user/file.txt` 复制到远程主机 `remote_host` 上的 `/tmp/` 目录下: ```bash scp /home/user/file.txt user@remote_host:/tmp/ ``` 如果需要递归复制整个目录,则加上 `-r` 参数: ```bash scp -r /home/user/folder/ user@remote_host:/tmp/ ``` ##### 2. **从远程复制到本地** 将远程主机上的文件 `/path/to/file` 下载到本地当前目录: ```bash scp user@remote_host:/path/to/file . ``` ##### 3. **跨两台远程主机之间的文件复制** 假设需要将 `serverA` 上的文件复制到 `serverB`,可以通过以下方式实现: ```bash scp user@serverA:/path/to/source user@serverB:/path/to/target ``` > 注意:这种操作通常要求执行者拥有对两台服务器的有效认证凭证。 ##### 4. **利用环境变量优化路径表达** 当希望快速定位并上传至相同结构的位置时,可以借助 `$PWD` 来减少重复输入: ```bash scp -r folder server:$PWD ``` 这里假定了目标机器的工作目录与当前一致[^4]。 --- #### 示例代码片段 以下是几个常见的脚本化场景: **批量同步多个文件夹** ```bash #!/bin/bash for dir in $(ls ./dirs_to_sync); do scp -r "./dirs_to_sync/$dir" remote_user@target_server:"/destination/path/" done ``` **定时任务配合 SCP 自动备份** 编辑 crontab 文件加入如下行以每天凌晨两点自动推送日志存档: ```cron 0 2 * * * scp /var/log/*.log backup_server:/backup/logs/ ``` --- #### 总结 通过以上介绍可以看出,`scp` 不仅提供了便捷的方式来进行网络间的数据交换,还内置了许多增强安全性以及效率的功能设置。合理运用这些特性可以帮助管理员更高效完成日常运维任务。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值