無法訪問我的伺服器“權限被拒絕(公鑰)”。
嗨,我在我的伺服器 B 上創建了一個密鑰環
我將伺服器 B 的公鑰複製到伺服器 A 的 authorized_keys 文件中
我的伺服器在 Ubuntu 20.04 LTS 上
當我嘗試將目錄從伺服器 A 傳輸到伺服器 B 時,出現此錯誤:
ubuntu@server_B:~$ scp -r -p ubuntu@server_A:/home/ubuntu/www-example-com/ /home/ubuntu/www-example-com/ ubuntu@server_A: Permission denied (publickey).
為什麼我有這個錯誤?如何糾正?
ubuntu@server_B:~$ ls -l /home total 20 drwx------ 2 root root 16384 Nov 5 01:14 lost+found drwxr-xr-x 11 ubuntu ubuntu 4096 Nov 5 03:57 ubuntu ubuntu@server_B:~$ ls -a -l /home/ubuntu total 76 drwxr-xr-x 11 ubuntu ubuntu 4096 Nov 5 03:57 . drwxr-xr-x 4 root root 4096 Nov 5 01:04 .. -rw------- 1 ubuntu ubuntu 4961 Nov 5 03:38 .bash_history -rw-r--r-- 1 ubuntu ubuntu 220 Feb 25 2020 .bash_logout -rw-r--r-- 1 ubuntu ubuntu 3771 Feb 25 2020 .bashrc -rw-rw-r-- 1 ubuntu ubuntu 241 Nov 5 01:28 bridge_log.txt drwx------ 3 ubuntu ubuntu 4096 Nov 5 01:24 .cache drwxr-x--- 3 ubuntu ubuntu 4096 Nov 5 01:24 .config drwx------ 4 ubuntu ubuntu 4096 Nov 5 01:28 .gnupg drwxrwxr-x 3 ubuntu ubuntu 4096 Nov 5 03:57 .local -rw------- 1 ubuntu ubuntu 409 Nov 5 03:50 .mysql_history drwxr-xr-x 9 ubuntu ubuntu 4096 Nov 5 03:27 nginx-1.18.0 drwxrwxr-x 7 ubuntu ubuntu 4096 Nov 5 03:27 ngx_brotli drwx------ 3 ubuntu ubuntu 4096 Nov 5 01:24 .password-store -rw-r--r-- 1 ubuntu ubuntu 807 Feb 25 2020 .profile drwx------ 2 ubuntu ubuntu 4096 Nov 5 04:43 .ssh -rw-r--r-- 1 ubuntu ubuntu 0 Nov 5 01:07 .sudo_as_admin_successful -rw-rw-r-- 1 ubuntu ubuntu 204 Nov 5 03:33 .wget-hsts drwxr-xr-x 2 ubuntu ubuntu 4096 Nov 5 04:00 www-example-com ubuntu@server_B:~$ ls -l .ssh total 16 -rw------- 1 ubuntu ubuntu 748 Nov 5 04:34 authorized_keys -rw------- 1 ubuntu ubuntu 3434 Nov 5 04:32 id_rsa_dev-example-com -rw-r--r-- 1 ubuntu ubuntu 748 Nov 5 04:32 id_rsa_dev-example-com.pub -rw-r--r-- 1 ubuntu ubuntu 222 Nov 5 04:43 known_hosts
和
ubuntu@server_A ~ $ ls -l /home total 20 drwx------ 2 root root 16384 Sep 7 17:10 lost+found drwxr-xr-x 12 ubuntu ubuntu 4096 Nov 5 02:02 ubuntu ubuntu@server_A ~ $ ls -a -l /home/ubuntu total 148 drwxr-xr-x 12 ubuntu ubuntu 4096 Nov 5 02:02 . drwxr-xr-x 4 root root 4096 Sep 7 17:04 .. -rw------- 1 ubuntu ubuntu 72711 Nov 5 02:02 .bash_history -rw-r--r-- 1 ubuntu ubuntu 220 Feb 25 2020 .bash_logout -rw-r--r-- 1 ubuntu ubuntu 4049 Sep 7 21:13 .bashrc -rw-rw-r-- 1 ubuntu ubuntu 258 Sep 7 17:20 bridge_log.txt drwx------ 4 ubuntu ubuntu 4096 Sep 7 17:50 .cache drwxr-x--- 4 ubuntu ubuntu 4096 Sep 7 17:50 .config drwxrwxr-x 3 ubuntu ubuntu 4096 Sep 7 21:13 .drush drwx------ 4 ubuntu ubuntu 4096 Oct 27 16:15 .gnupg drwxrwxr-x 3 ubuntu ubuntu 4096 Sep 7 17:50 .local -rw------- 1 ubuntu ubuntu 3417 Sep 14 04:38 .mysql_history drwxr-xr-x 9 ubuntu ubuntu 4096 Sep 7 17:38 nginx-1.18.0 drwxrwxr-x 7 ubuntu ubuntu 4096 Sep 7 17:38 ngx_brotli drwx------ 3 ubuntu ubuntu 4096 Sep 7 17:18 .password-store -rw-r--r-- 1 ubuntu ubuntu 807 Feb 25 2020 .profile -rw-rw-r-- 1 ubuntu ubuntu 66 Sep 7 21:15 .selected_editor drwx------ 2 ubuntu ubuntu 4096 Nov 5 04:42 .ssh -rw-r--r-- 1 ubuntu ubuntu 0 Sep 7 17:07 .sudo_as_admin_successful -rw-rw-r-- 1 ubuntu ubuntu 244 Nov 5 03:45 .wget-hsts drwxr-xr-x 6 ubuntu ubuntu 4096 Nov 4 01:03 www-example-com ubuntu@server_A ~ $ ls -l .ssh total 4 -rw------- 1 ubuntu ubuntu 1496 Nov 5 04:33 authorized_keys
伺服器 B(副本)
$ cat /home/ubuntu/.ssh/id_rsa_dev-example-com.pub
伺服器 A(過去)
$ nano /home/ubuntu/.ssh/authorized_keys $ sudo systemctl restart ssh
如評論中所述,您沒有指定身份文件。
預設情況下,將檢查一組特定的文件名,例如
~/.ssh/id_rsa
,並且您的身份文件不是這樣命名的。因此ssh
沒有找到私鑰。使用 指定身份文件
-i
,例如ssh -i ~/.ssh/id_rsa_dev-example-com user@host
。或者將文件重命名為預設值,例如mv ~/.ssh/id_rsa_dev-example-com ~/.ssh/id_rsa
.
加密密鑰是一組用於建立安全連接的訪問憑證。遠端 SSH 守護程序不接受提供的密鑰對您使用的帳戶名有效,並拒絕您的登錄。確保 authorized_keys 文件包含匹配的公鑰。檢查您的公鑰是否已添加到伺服器。
需要 SSH 客戶端密鑰對指紋檢查 ssh -i ~/.ssh/test-key.pem ubuntu@server_IP
同樣通過以下步驟,您可以重新檢查 SSH 密鑰
根本原因:
關於基於密鑰的身份驗證的許多最常見問題是由不正確的文件權限或所有權引起的。以下是您可以採取的一些步驟來解決此問題:
確保authorized_keys 文件和私鑰本身俱有正確的權限和所有權。
檢查伺服器是否允許基於密鑰的身份驗證。
確保 SSH 客戶端可以讀取私鑰。
您可能正在使用 OpenSSH 服務不再支持的私鑰。這通常會在使用私有 SSH DSA 密鑰時產生影響。所以嘗試創建一個 2048 位的 RSA 密鑰對。
簡單的 3 個步驟:
- 生成 SSH 密鑰對 - 將公鑰複製到 Ubuntu 伺服器 - 登錄遠端伺服器
注意:去掉’#‘並執行
1.生成SSH密鑰對$$ serverB $$ $$ Public key + Private key $$
#mkdir –p $HOME/.ssh #創建一個隱藏目錄來儲存你的 SSH 密鑰
#chmod 0700 $HOME/.ssh #根據需要修改該目錄的權限
#ssh –keygen –t rsa 4096 #create a 2048-bit RSA key pair #server 會要求你創建一個密碼片語作為額外的安全層,如果需要你可以添加一個輸入一個難忘的密碼片語,然後按 Enter 或者你可以跳過它。
2.將公鑰複製到$$ serverA $$
#系統會將~/.ssh/id_rsa.pub的內容從客戶端系統複製到服務端系統的~/.ssh/authorized_keys目錄下。
#ssh-copy-id ubuntu@<server_IP> #######重要########
或手動將 SSH 密鑰複製到
$$ serverA $$ #cat ~/.ssh/id_rsa.pub | ssh username@<server_IP> “mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys”
#將 server_IP 替換為您的伺服器的實際 IP 地址。
3.登錄遠端伺服器
#ssh ubuntu@server_IP
一旦你能夠 SSH 重試 scp