shell脚本实现scp 自动输入密码
时间: 2024-11-06 19:21:27 浏览: 47
Shell脚本实现自动输入密码登录服务器
在Shell脚本中使用`scp`命令自动输入密码通常涉及到使用SSH key对来代替明文密码,因为直接在脚本中写明密码不是安全的做法。如果你还没有设置SSH密钥对,可以按照以下步骤操作:
1. **生成SSH密钥对**:
- 打开终端,运行 `ssh-keygen`。根据提示交互式创建一个新的密钥对,或者指定文件路径自行保存。默认情况下,私钥会被保存在`~/.ssh/id_rsa`,公钥在`~/.ssh/id_rsa.pub`。
2. **添加公钥到目标机器的authorized_keys**:
- 使用`ssh-copy-id user@target_host`将本地的公钥发送到目标服务器,并替换`user`为目标用户的用户名,`target_host`为远程主机地址。
3. **修改权限**:
- 确保`.ssh`目录及其内容只有当前用户有读写权限,可以用`chmod`命令:`chmod -R 700 ~/.ssh`。
4. **无密码 SCP**:
- 现在你可以通过SSH密钥对进行`scp`操作了,无需手动输入密码。例如:
```
scp -i ~/.ssh/id_rsa source_file user@target_host:/path/to/destination
```
如果由于某些原因你不能使用SSH密钥对,还可以尝试使用`expect`工具结合`read -s`函数临时隐藏输入密码的过程,但这通常更复杂并且不如密钥对安全。
阅读全文