Wordpress 找不到 ssh 公鑰和私鑰對
我的伺服器配置如下: 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.pub
到authorized_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 更新顯示使用完整路徑來指定密鑰。