我有两个 LAN,路由器通过隧道与我的 Debian 服务器通过互联网进行通信。这样就很好了。我可以使用证书进行 SSH,这样就不需要密码就可以将本地服务器 1 用户 (Tom) 连接到远程服务器用户 (Harry)。我对设置远程服务器目录上的目录权限、所有者和组感到困惑,以便将文件从我的本地 LAN 服务器 scp 到远程服务器而不会出现权限被拒绝的情况。我可以通过说明本地 LAN 有 3 个服务器和一个 NAS 来进一步复杂化这个问题,另外我希望使用 Perl 和 crontab 自动执行此操作。尽管只是帮助澄清这一点的基本知识,但还是非常感谢。谢谢。
答案1
文件系统Permission denied
错误与您的 SSH 连接无关。只有授予每个终端用户 ID 的权限才重要。请考虑:
$ whoami
tom
$ scp foo harry@remote:bar
用户
tom
必须能够读取路径名foo
。- 您无需使用即可测试这一点
scp
——只需尝试读取文件即可foo
。
- 您无需使用即可测试这一点
用户
harry
必须能够bar
在 上写入路径名remote
。- 您无需使用 -- 即可测试这一点,只需以 as
scp
登录并尝试写入文件(as )。remote
harry
bar
harry
- 您无需使用 -- 即可测试这一点,只需以 as
如果上述任何一个测试失败,那么scp
就会失败。
例如:
$ scp /etc/shadow harry@remote:bar
/etc/shadow: Permission denied
本地用户tom
无法读取/etc/shadow
。
$ touch foo
$ scp foo harry@remote:/etc/shadow
scp: /etc/shadow: Permission denied
远程用户harry
无法写入/etc/shadow
。