Linux

Wordpress 找不到 ssh 公鑰和私鑰對

  • October 29, 2015

我的伺服器配置如下: CentOS 5.8 (final) 執行 Nginx。

我正在使用 Wordpress 外掛安裝程序的 SSH2 功能。

我已經安裝lib2ssh並且它正在工作(Wordpress 承認它存在)。

playwithbits我提供給 wordpress的使用者(稱為/home/nginx/domains/playwithbits/

公鑰和私鑰位於目錄中,並/home/nginx/domains/playwithbits/keys/分別命名為和。id_rsa.pub``id_rsa

我已將 的內容複製id_rsa.pubauthorized_keys 位於/home/nginx/domains/playwithbits/.ssh/

我沒有為密鑰文件設置密碼。但是 Wordpress 不斷返回錯誤:

playwithbits 的公鑰和私鑰不正確

我已向 Wordpress 提供了以下資訊

Hostname: localhost
Username: playwithbits
Password: Blank
Public key: /keys/id_rsa.pub //I have also tried the paths from server root
Private key: /keys/id_rsa

以下是我對相關文件夾和文件設置的權限:

drwx------ 2 playwithbits playwithbits 4096 Jun  8 11:25 .ssh
drwx------ 2 playwithbits playwithbits 4096 Jun  8 13:27 keys
-rw------- 1 playwithbits playwithbits  414 Jun  8 11:21 authorized_keys
-rw------- 1 playwithbits playwithbits 1.7K Jun  6 02:17 id_rsa
-rw-r--r-- 1 playwithbits playwithbits  414 Jun  6 02:17 id_rsa.pub

我還嘗試在調試模式下連接,在該模式下我得到以下輸出:

Connection from 127.0.0.1 port 56674
debug1: Client protocol version 2.0; client software version libssh2_0.18 PHP
debug1: no match: libssh2_0.18 PHP
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8
debug1: permanently_set_uid: 74/74
debug1: list_hostkey_types: ssh-rsa,ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: client->server aes256-cbc hmac-sha1 none
debug1: kex: server->client aes256-cbc hmac-sha1 none
debug1: expecting SSH2_MSG_KEXDH_INIT
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: KEX done
Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2)
debug1: do_cleanup
debug1: do_cleanup

有誰知道為什麼我不能使用公鑰和私鑰訪問?如果我使用帳戶的密碼,而不是 wordpress 能夠登錄並執行更新。

**編輯:**在我的sshd_config文件中,我有以下規則:

Match group web-root-locked
        ChrootDirectory /home/nginx/domains/%u
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp
        AuthorizedKeysFile /home/nginx/domains/%u/.ssh/authorized_keys

playwithbits是成員web-root-locked

通過一些試驗和錯誤找到了答案。密鑰需要由網路伺服器擁有,而不是我嘗試登錄的使用者。

chown nginx:nginx id_rsa
chown nginx:nginx id_rsa.pub

現在它像夢一樣運作。

我的第一直覺:id_rsa應該在 ~/.ssh/

Apache 可能正在通過 fork、children、這些程序的子程序等產生各種程序。為此,我會找出 Wordpress 認為它試圖通過使用審計日誌工具打開的路徑。

`auditctl -a entry,always -F arch=`arch` -F euid!=0 -S open`
`auditctl -a entry,always -F arch=`arch` -F euid!=0 -S stat`

那些應該抓住嘗試。您可以通過grep id_rsa在審核日誌中查看嘗試打開來找到它。如果這不能提供資訊,那麼通過chdir監控等進行更深入的探勘將是可行的方法,但我非常有信心open系統呼叫會抓住這一點。

一旦你知道它試圖做什麼,你就可以確定路徑是否相對於使用者主目錄、另一個使用者的主目錄、http 根目錄、FS 根目錄等。

更新

教程使用 ssh 進行 Wordpress 更新顯示使用完整路徑來指定密鑰。

Wordpress ssh 連接資訊

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