使用scp传输出现 Permission denied (publickey,password)
时间: 2025-03-07 17:10:53 浏览: 132
### 解决SCP传输文件时出现Permission denied (publickey,password)错误
当通过SSH或SCP尝试连接至远程服务器并遭遇`Permission denied (publickey)`错误时,这通常意味着客户端未能成功提供有效的公钥认证给服务端[^1]。
#### 配置无密码SSH登录
为了实现无需手动输入密码即可完成SCP操作的目标,需先配置好基于密钥的身份验证机制:
1. **创建SSH密钥对**
如果本地机器尚未拥有SSH密钥,则应生成一对新的RSA类型的私钥和对应的公钥。此过程可通过执行如下命令达成:
```bash
ssh-keygen -t rsa -C "[email protected]"
```
上述指令会引导用户指定保存位置以及设置加密口令(可选)。对于自动化场景下推荐留空以简化流程[^2]。
2. **上传公钥至目标主机**
接着要把刚刚产生的`.pub`结尾的公钥复制粘贴到远端服务器上的特定目录内,具体来说就是追加进位于家目录下的`.ssh/authorized_keys`文件里去。可以借助`ssh-copy-id`工具自动处理这一环节:
```bash
ssh-copy-id b@server_ip
```
这里假设远程用户的名称为`b`而其公网IP地址则表示成`server_ip`的形式[^3]。
3. **调整权限设定**
确保所有涉及的关键文件都具备恰当的安全属性,特别是关于读写许可的部分。一般情况下,个人主目录及其子项应当仅限于户主本人访问;至于`.ssh`夹内的条目更得严格控制——比如私钥务必设为600模式(`chmod 600 ~/.ssh/id_rsa`),授权列表也最好保持同样严格的保护级别(`chmod 600 ~/.ssh/authorized_keys`)。
4. **测试连通性**
最后一步便是检验整个设置是否生效了。试着发起一次简单的SSH请求看看能否顺利抵达对方节点而不必再经历繁琐的人工干预:
```bash
ssh b@server_ip
```
一旦确认一切正常运作之后,利用SCP来进行数据交换也就变得轻而易举了。无论是推送还是拉取资源都能依照常规语法格式轻松搞定。
#### SCP命令实例
- 将本机文件发送出去:
```bash
scp /path/to/local/file.txt b@server_ip:/destination/path/
```
- 获取来自远方的数据:
```bash
scp b@server_ip:/remote/source/file.txt /local/destination/
```
阅读全文
相关推荐

















