簡體   English   中英

mysql 無法連接 SSH 隧道 -> 拒絕“無”訪問

[英]mysql could not connect the SSH tunnel -> access denied for 'none'

我有一台只能通過 SSH 訪問的服務器,我在這台服務器上安裝了 MySQL。 並創建了一個遠程用戶,以便我可以使用 mySQL 工作台進行開發,但是當嘗試使用 MySQL 工作台 GUI 進行 SSH 時,我收到以下錯誤:無法連接可以繼續公鑰的 SSH 隧道身份驗證。

我能夠從服務器本身連接到用戶並且沒有任何問題,我已經檢查了權限並且遠程訪問似乎已為此用戶激活:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| developer        | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

我填寫了以下內容:

SSH Hostname <server-IP>
SSH username root
SSH password <clear>
SSH Key File <privat key file>

MySQL Hostname 127.0.0.1
MySQL Server Port 3306
Username <user>
Password <password>
Default Schema <empty>

我在連接到 MySQL 時遇到了類似的問題,並想分享我的解決方案,以防其他人在這里結束。

該問題發生在兩種不同的情況下。

場景一:我使用服務器生成的私鑰成功訪問了 MySQL 數據庫(我使用的是 CPanel)。 我從服務器中刪除了相應的公鑰(錯誤地),然后嘗試重新連接並收到錯誤。

這里的解決方案當然是重新生成密鑰。

場景二:我嘗試使用 OpenSSH 生成的私鑰訪問 MySQL 數據庫。 我將密鑰的位置設置為 C:/Users/username/.ssh/id_rsa 並收到錯誤消息。

這里的解決方案是將 OpenSSH 私鑰轉換為 RSA 私鑰。

ssh-keygen -p -m PEM -f C:/Users/username/.ssh/id_rsa

確保事先備份您的 OpenSSH 私鑰,因為這將覆蓋 id_rsa。

然后我能夠使用 RSA 私鑰連接到 MySQL 服務器。

您可以通過在任何文本編輯器中查看它們並閱讀第一行來區分這兩種類型的鍵。 它將顯示 OPENSSH 或 RSA。

對於像我一樣嘗試通過 PuTTY 生成的 SSH 密鑰進行連接的人:

  1. 使用 PuTTYGen 打開私鑰。 它會詢問私鑰密碼。
  2. Go 到 Conversions->Export OpenSSH Key 菜單。
  3. 它會要求將文件名分配給轉換后的 OpenSSH 密鑰。 給它一個不同於你開始使用的 PuTTY 私鑰的名稱。
  4. 在 MySQL Workbench 中,使用轉換后的密鑰作為“SSH 密鑰文件”。 詢問時,輸入私鑰密碼。
  5. 此時它應該連接。

對我來說,實際上反之亦然——我的密鑰是 RSA 私鑰,必須將其轉換為 OpenSSH。 然后 MySQL Workbench 連接成功。 我想無論誰有類似的問題,嘗試以任何一種方式轉換私鑰都可能是值得的。

就我而言,當我 select id_rsa.pub而不是id_rsa時出現問題,所以當我 select id_rsa問題消散時!

我必須從我的密鑰文件中刪除密碼以允許 MySQL Workbench 使用它。

對於我使用 mysql 工作台 8.0 的情況,需要新的 openssh 密鑰格式。 所以當你生成openssh格式時。 確保生成新格式,然后為 sshkey 提供該密鑰

對我來說,這與 user:group 有關。 我沒有將文件設置為 root:root,而是對 localuser:localuser 執行了一次 chown,它工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM