我已經為此苦苦掙扎了好幾天,但找不到我做錯了什麼。
我在 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/