Ubuntu

無法訪問我的伺服器“權限被拒絕(公鑰)”。

  • November 5, 2020

嗨,我在我的伺服器 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

引用自:https://serverfault.com/questions/1041347