新闻资讯
领先云端方案商,专注云桌面、云手机研发,凭核心虚拟化技术与云端算力,打造安全高效数字化平台,提供全周期支持。
分类
相关文章
热门标签

怎么把文件放到跳板机上 日常维护示例与常见权限错误快速修复方法

2026年6月16日

1. 准备:确认环境与账号

1) 检查本地与跳板机的SSH连通:ssh user@bastion.example.com -p 22。
2) 确认跳板机能到目标内网主机:从跳板机ssh user@target.internal。若不能,先解决网络/路由问题。
3) 确认有可写目录(如/home/upload或/var/sftp/upload):如果没有,管理员在跳板机上创建并设置拥有者:sudo mkdir -p /home/upload && sudo chown jumpuser:jumpgroup /home/upload && sudo chmod 770 /home/upload。

2. 最简单:直接把文件上传到跳板机(scp/sftp)

1) scp命令(带密钥):scp -i ~/.ssh/id_rsa ./localfile.txt jumpuser@bastion.example.com:/home/upload/。
2) scp时指定端口:scp -P 2222 localfile jump@bastion:/path/。
3) 使用sftp交互式:sftp -i ~/.ssh/id_rsa jumpuser@bastion.example.com,然后put localfile /home/upload/localfile。适合大文件断点或手动管理。

3. 通过跳板机把文件转到内网目标主机(ProxyJump/ProxyCommand)

1) 一步到位(OpenSSH 7.3+ ProxyJump):scp -o ProxyJump=jumpuser@bastion.example.com localfile targetuser@target.internal:/path/。
2) rsync示例(推荐断点续传/同步):rsync -avz -e "ssh -J jumpuser@bastion.example.com" ./localdir/ targetuser@target.internal:/remote/dir/。
3) 如果老版OpenSSH,使用ProxyCommand:scp -o "ProxyCommand ssh -W %h:%p jumpuser@bastion" localfile target@target:/path/。

4. 通过跳板机在两台远程主机间传输(scp -3或代理转发)

1) scp -3 用法(本地作为中转):scp -3 user1@host1:/path/file user2@host2:/path/。注意两端需允许ssh连接且版本支持。
2) 若不能直接,先上传到跳板机再从跳板机传到目标:本地->跳板:scp localfile jump:/home/upload/,ssh jump 然后 scp /home/upload/localfile target:/dest/。

5. SSH密钥、Agent与权限建议(避免常见认证问题)

1) 私钥权限必须是600:chmod 600 ~/.ssh/id_rsa;.ssh目录700:chmod 700 ~/.ssh。authorized_keys 600。
2) 把公钥推到跳板机:ssh-copy-id -i ~/.ssh/id_rsa.pub jumpuser@bastion.example.com。若不能用ssh-copy-id,可手工echo >> ~/.ssh/authorized_keys。
3) 使用ssh-agent转发:eval "$(ssh-agent -s)"; ssh-add ~/.ssh/id_rsa;并在ssh时允许ForwardAgent(但注意安全风险)。

6. 常见权限错误与快速修复清单

1) Permission denied (publickey):确认私钥权限600,公钥存在于目标用户~/.ssh/authorized_keys,服务器sshd_config允许PubkeyAuthentication yes。
2) Permission denied (publickey) / bad ownership:检查~/.ssh和home目录属主和权限,不当属主或过宽权限会导致拒绝,修复示例:sudo chown -R user:user /home/user && chmod 700 /home/user/.ssh && chmod 600 /home/user/.ssh/authorized_keys。
3) scp: Permission denied(写权限):确认目标目录权限与SELinux上下文(下一段)。若是临时解决,可把文件放到用户家目录,再由管理员移动。

7. SELinux、ACL与特殊环境下的修复方法

1) SELinux检查:ls -Z /path/ 看上下文,若不对:sudo restorecon -Rv /path/。临时关闭(不推荐)sudo setenforce 0。
2) ACL问题:getfacl /path/ 查看,设置ACL示例:setfacl -m u:targetuser:rwx /path/。
3) 当使用Chroot SFTP(如/var/sftp)时,目录必须root:root且权限严格,上传目录需额外子目录给用户写入,例:/var/sftp/upload owned by root, /var/sftp/upload/userdir chown user。

8. 日常维护与自动化建议

1) 定期检查SSH登录日志(/var/log/auth.log或/var/log/secure)以发现失败原因;设置fail2ban防止暴力破解。
2) 用脚本同步公钥与user列表(配置管理如Ansible可批量下发authorized_keys),示例Ansible片段可保证权限与内容一致。
3) 对常用传输路径设置监控与容量报警,定期清理临时文件并限制上传大小与速率(rsync带--bwlimit)。

9. 常见问答一:为什么scp报“Permission denied”且我确认权限已改?

问:scp报“Permission denied”,我已经把私钥权限改为600,还是不行,如何快速定位?

答:先确认使用的是正确的私钥(ssh -v 登录看使用的key),确认跳板机目标用户的~/.ssh/authorized_keys 包含公钥且权限、属主正确;检查sshd_config是否禁用了Password或Pubkey;若是写权限被拒绝,检查目标目录属主和SELinux上下文并用restorecon修正,必要时查看/var/log/auth.log获取详细报错信息。

10. 常见问答二:如何在Windows上传到跳板机?

问:我在Windows上,如何把文件传到跳板机并通过跳板机传到内网主机?

答:推荐使用WinSCP或PuTTY/pscp。WinSCP可以配置“高级->连接->代理/Proxy”或使用Pageant加载私钥并设置“SSH代理”;若需ProxyJump,在Putty里配置跳板机作为ProxyCommand或先用pscp上传至跳板,再SSH到跳板用scp传到目标。注意将私钥转换为Ppk格式(PuTTYgen)。

11. 常见问答三:上传后文件属主/权限不对怎么快速修复?

问:文件传上去后属主变成root或权限不正确,如何快速修复并避免再次发生?

答:快速修复用chown/chmod:sudo chown targetuser:targetgroup /path/file && sudo chmod 644 /path/file。若是SFTP/Chroot导致属主问题,应检查上传流程(是否用sudo上传或用root账号),并为上传设计专用目录与上传脚本,或使用rsync --chown=USER:GROUP 同步后自动设置归属。

跳板机

来源:怎么把文件放到跳板机上 日常维护示例与常见权限错误快速修复方法