我已经为此苦苦挣扎了好几天,但找不到我做错了什么。
我在 VPS 服务器上有一个网站。每天晚上我都会备份数据库。它存储在我的 VPS 服务器上。我还想发送一份副本到家里的 NAS (Synology DS214play)。两台服务器都在 Linux 上运行。
所以我已经登录到我的 VPS 服务器(以 root 身份)并生成了一个ssh-keygen
.
在我的 VPS 上,它看起来像这样:
[root@vps /]# cd ~
[root@vps ~]# ls -alh
dr-xr-x---. 7 root root 4.0K Jun 25 18:58 .
dr-xr-xr-x. 24 root root 4.0K Jun 25 19:33 ..
drwx------ 3 root root 4.0K Jun 25 20:29 .ssh
[root@vps ~]# cd .ssh
[root@vps .ssh]# ls -alh
drwx------ 3 root root 4.0K Jun 25 20:29 .
dr-xr-x---. 7 root root 4.0K Jun 25 18:58 ..
-rw------- 1 root root 1.7K Jun 26 07:27 id_rsa
-rw-r--r-- 1 root root 403 Jun 26 07:27 id_rsa.pub
-rw------- 1 root root 394 Jun 25 20:29 known_hosts
然后我使用以下命令将文件复制到 NASssh-copy-id
admin@NAS:/$ cd ~
admin@NAS:~$ ls -alh
drwxrwxrwx 6 admin users 4.0K Jun 26 07:28 .
drwxrwxrwx 13 root root 4.0K Jun 21 20:57 ..
drwx------ 2 admin users 4.0K Jun 26 07:28 .ssh
admin@NAS:~$ cd .ssh
admin@NAS:~/.ssh$ ls -alh
drwx------ 2 admin users 4.0K Jun 26 07:28 .
drwxrwxrwx 6 admin users 4.0K Jun 26 07:28 ..
-rw------- 1 admin users 403 Jun 26 07:27 authorized_keys
当我查看时VPS/id_rsa.pub
,NAS/authorized_keys
我发现两个密钥是相同的。
现在我尝试使用以下方法将测试文件从 VPS 复制到 NAS:
[root@vps /]# scp -i ~/.ssh/id_rsa /test.txt admin@___.___.___.___:/volume1/SQL_backup
然而,这会导致 shell 询问我密码(每次)。
为什么我必须一直给我通行证?
答案1
在对守护程序问题进行故障排除时,应始终检查系统日志。
在这种特殊情况下,如果您检查主机上的系统日志NAS
,您将看到类似以下内容的内容:
Authentication refused: bad ownership or modes for directory /home/admin
问题如以下输出所示:
admin@NAS:~$ ls -alh
drwxrwxrwx 6 admin users 4.0K Jun 26 07:28 .
authorized_keys
为了安全起见,如果目录的任何祖先~/.ssh
可由用户或 root 以外的其他人写入(祖先含义/home/user/.ssh
, /home/user
, /home
, /
),则 SSH 将拒绝使用该文件。这是因为其他用户可以用自己的~/.ssh
目录(或文件)替换该目录(或~/.ssh/authorized_keys
文件),然后通过 ssh 登录到您的用户。
要修复此问题,请更改目录的权限,如下所示:
chmod 755 ~
答案2
您在使用 创建私钥时有机会为私钥创建密码ssh-keygen
。
以下是我使用的工作流程:
ssh-keygen
ssh-copy-id root@remote_host
scp /test.text root@remote_host:/opt/application/