写shell脚本,实现利用ssh秘钥传输文件
时间: 2024-10-21 19:02:31 浏览: 31
编写一个Shell脚本以利用SSH密钥传输文件通常涉及到以下几个步骤:
1. **创建SSH密钥对**:首先,你需要在你的本地机器上生成SSH密钥对,例如使用`ssh-keygen -t rsa`,默认会在~/.ssh/目录下生成id_rsa和id_rsa.pub两个文件。
2. **授权公钥**:将公钥(id_rsa.pub)内容添加到目标Linux服务器的 authorized_keys 文件里,例如:
```bash
echo "yourPublicKeyHere" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
3. **编写脚本**:创建一个新的shell脚本,比如`transfer_files.sh`,内容可能类似这样:
```bash
#!/bin/bash
set -e
source_dir="/path/to/local/directory"
target_dir="/path/to/remote/directory"
if [ ! -d "$source_dir" ]; then
echo "Source directory does not exist."
exit 1
fi
rsync -avz --rsh='ssh -i /path/to/private/key' "$source_dir/" user@server_ip_address:$target_dir
```
其中,`-i` 参数指定了私钥文件的路径,`user@server_ip_address`替换为实际的用户名和服务器地址。
4. **赋予脚本执行权限**:
```bash
chmod +x transfer_files.sh
```
5. **运行脚本**:
```bash
./transfer_files.sh
```
执行这个脚本后,它会使用SSH密钥通过rsync命令安全地将源目录的内容同步到远程服务器的目标目录。
阅读全文