Debian 8使用scp复制日志文件遇Permission denied(publickey)求解
解决Debian 8下SCP出现Permission denied (publickey)的问题
我来帮你一步步排查解决这个问题,毕竟Permission denied (publickey)是SSH/scp场景里非常常见的认证问题,尤其是用root用户跨机器操作时。以下是针对你的情况的具体解决步骤:
1. 检查本地是否存在SSH密钥对
首先确认你的Debian 8机器上有没有生成过SSH密钥对,打开终端执行:
ls -la ~/.ssh/
如果输出里没有id_rsa(私钥)和id_rsa.pub(公钥)这类文件,说明你还没生成密钥对,执行下面的命令生成:
ssh-keygen -t rsa
执行过程中一路按回车即可(不需要设置密码,除非你需要额外的安全验证),生成后会在~/.ssh/目录下创建密钥文件。
2. 将本地公钥上传到日志服务器的root用户授权列表
这一步是让日志服务器信任你的本地机器,最简单的方式是用ssh-copy-id命令:
ssh-copy-id root@logs.company.com
执行后会提示你输入日志服务器root用户的密码(如果之前没配置过密钥登录的话),输入后公钥会自动添加到远程服务器/root/.ssh/authorized_keys文件中。
如果ssh-copy-id命令不可用,你可以手动操作:
- 先在本地终端打印公钥内容:
cat ~/.ssh/id_rsa.pub - 复制输出的全部内容,然后通过SSH登录到日志服务器,编辑
/root/.ssh/authorized_keys文件(如果文件不存在就新建),把复制的公钥粘贴进去并保存。 - 关键!设置正确的权限(SSH对权限要求很严格):
chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys
3. 检查日志服务器是否允许root用户通过SSH密钥登录
有时候服务器会禁用root用户的SSH登录,或者只允许密码登录。你需要登录到日志服务器,修改SSH配置:
- 编辑
/etc/ssh/sshd_config文件:nano /etc/ssh/sshd_config - 找到
PermitRootLogin这一行,修改为:PermitRootLogin yes # 或者如果想只允许密钥登录(更安全),可以设为:PermitRootLogin without-password - 保存文件后,重启SSH服务(Debian 8用service命令):
service ssh restart
4. 测试SSH连接,再尝试SCP
先测试能不能正常通过SSH登录日志服务器:
ssh root@logs.company.com
如果能成功登录,说明密钥认证已经生效,再执行你原来的SCP命令应该就没问题了:
scp root@logs.company.com:/srv/log/2018-05-08/payyex_prod_wallet_log /home/cherryl/Desktop
如果还是有问题,可以用verbose模式查看详细报错信息,方便进一步排查:
ssh -v root@logs.company.com # 或者scp的verbose模式: scp -v root@logs.company.com:/srv/log/2018-05-08/payyex_prod_wallet_log /home/cherryl/Desktop
内容的提问来源于stack exchange,提问作者Arefe
相关产品推荐
相关产品推荐

