標籤: SFTP

建立手機與網站的溝通管道

No Comments

我們通常會使用手機建立與取得數位媒體資料,例如影片,照片,下載資料,人家分享的資料等。
再透過最直接的方法,例如我們可以在網站上建立可上傳檔案的界面,其可以是公開的,也可以是私有隱藏的,乃或最熱門的做法,建立類似 FB 那樣的上傳界面/發表文章界面。這些筆者都還沒試過但相信 wordpress 早已有這些外掛了。

此處,筆者仍依循傳統的方法,建立手機與網站,其實是伺服器,之間的通道,資料能夠在彼此間互通有無。與其說傳統,不如說正統,即,有較高的安全性且我們能完全掌控。
而需要有新的知識嗎?不用的!我們此前的文章,早已鋪好這條路了。方法如下:

使用手機 APP “cx 檔案總管”,建立 sftp client,就醬。

當然會寫這篇文章是因為還有些細節仍需要說明,而我們本文的最終目標就是,手機拍了張照片,上傳給 wordpress 媒體庫以供使用。

當使用這樣的設施時,包含 wordpress 能夠使用該資料/圖片,約需花費三分鐘的時間,故並非挺快。要快,我們日後可以再研究別的方法。

以下我們分三個對象個別來處理,方法並非唯一,例如非本文示例,PPK 私鑰檔也可直接由 puttygen 來産生。
此處使用了 Android app Termux,其有很多東西或許我們以後有機會可以再去探索。
於此也提醒,邏輯上,客戶端産生金鑰對,把公鑰傳給伺服器認可後以實現不需密碼的 ssh 通道。但反其道亦可行;伺服器産生金鑰對,將其傳給客戶端。本文就採取後者的做法;伺服器是主體,而有眾多的手機客體乃或客體的 app,或許由伺服器寄發金鑰會較安全合宜。本文是在信任 Termux app 的前提下;即,使用 Termux 並使用密碼來登入到伺服器。

伺服器

  1. 在伺服器上産生一組 ssh keys 將給手機使用。
    請參考“安裝 Openssh Server”中的 SFTP Server 那一段落。請注意,在該處 sftp server 已啟用 ftp_wp 這一帳號了,即已有了 ssh keys。但於此再簡單說明:他處欲無密碼登入本地的主機,本地的主機都必須存有他處的公鑰,且預設存於 $HOME/.ssh/authorized_keys 中。故本文在已有 authorized_keys 一檔的前提下。
  2. 使用 puttygen.exe 將私鑰轉成 id_rsa_android.ppk 格式。下載網址:
    https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
  3. 在 /home/allftpusers/ftp_wp/uploads/ 建立一個資料夾以供 wordpress 專用
  4. 在 ./wp-content/uploads 底下建立連結目的是 /home/allftpusers/ftp_wp/uploads/wordpress
  5. 關於這個路徑的背景,請參考“架個 ftp server”一文。
# step 1:

sudo mkdir -p /home/allftpusers/ftp_wp/.ssh

sudo ssh-keygen -f /home/allftpusers/ftp_wp/.ssh/id_rsa_android

sudo cat /home/allftpusers/ftp_wp/.ssh/id_rsa_android.pub >> /home/allftpusers/ftp_wp/.ssh/authorized_keys

# step 2: 接著我們可以刪除公鑰 id_rsa_android.pub,只保留私鑰 id_rsa_android,並在 windows 下 puttygen 將私鑰轉換成 id_rsa_android.ppk(此檔內記載著私鑰及重生的公鑰)

# step 3:
sudo mkdir -p /home/allftpusers/ftp_wp/uploads/wordpress

# step 4:
sudo ln -s /home/allftpusers/ftp_wp/uploads/wordpress /var/web/wordpress/wp-content/uploads/MyUploads
# MyUploads 是今後我們從手機上傳資料的落腳處,在 wordpress 後台便由此處來取得資料。

# 最後還須留意權限問題,將相關的都設成擁有者 ftp_wp
sudo chown -R ftp_wp /home/allftpusers/ftp_wp/.ssh
sudo chown ftp_wp /home/allftpusers/ftp_wp/uploads/wordpress
sudo chmod o+w /home/allftpusers/ftp_wp/uploads/wordpress

手機

  1. 安裝 termux;首次聽過它的讀者對它再熟悉不過了。
  2. 安裝 openssh:pkg install openssh
  3. 在 termux 下使用 ssh,用法與 Linux 上無異。因為目前不打算常使用 termux,即當前只是一次性使用,故直接以密碼登入即可,如下:
  4. scp 伺服器以取得 id_rsa_android.ppk,請參考“安裝 Openssh Server”一文。
  5. 在 termux 內的 id_rsa_android.ppk,是可以轉放到 sdcard,但非每個人都有 sdcard,故我們採最簡單的方式,cat 出內容後,複製下來再貼到 Android 下/例如使用 QuickEdit
  6. 安裝 cx 檔案總管
  7. 在 cx 檔案總管新增 sftp client,以 id_rsa_android.ppk 登入。
  8. 我們在“安裝 Openssh Server”一文,就已建立一個可供使用的帳號 ftp_wp,這邊就是使用這個帳號。
安裝 Termux
安裝 CX 檔案總管
在 CX 檔案總管內建立 sftp client。點選 NETWORK,點選增加。
填入登入資訊,並點選其它指定金鑰
載入金鑰後按確定即可建立客戶端
請注意,從本地端複製後,下方的紅圈處要一直存在,才能在遠端做貼上的動作。

WordPress

  1. 安裝外掛 WP File Manager
  2. 安裝外掛 Media Library Folders for WordPress(MLF)
  3. 使用 file manager 將上傳的檔案全數複製或搬移至某年某月的資料夾內
  4. 使用 MLF 做 refresh(Sync)。這步驟最重要。因若要 wordpress 能夠抓取出某媒體檔,它必須經過 wordpress 自帶的上傳界面。但我們全程並沒有此步驟,故 wordpress 不知道我們置入的檔案的存在。故需由 MLF 做 refresh - 其實際行為就是將檔案資訊登錄至 wordpress 資料庫中。如此方可使用。(但 MLF 有時候會針對每支檔案又産生出不同呎吋的檔案,其必要性筆者不清楚待釐清)故讀者可接著再使用 file manager 去查看最後産生的結果。

結論:我們主要的目的就是從手機上傳媒體檔給 wordpress 使用。

但若您的硬碟很大,任何從手機取得的檔案,都可備份或移動到您個人的雲端(伺服器)只要彈指之間即成。

或利用不停機的伺服器抓一些影片檔,手機一樣彈指之間就能觀看到那些最新的影片檔。

再或者,您知道手機可以存取 Windows 嗎?是的,WinXP,Win10,Ubuntu,都輕而易舉!試想,您使用手機,開啟/進入 Windows 後,處理一些事務産生一些檔案,打完收工。手機再把檔案抓下來呈現給客戶,全都在隨身之間,全都在彈指之間!阿在國外也行啊!

假如您懷疑,筆者給您一個關鍵字就夠了,其餘的前文都已鋪好路了:Remote RDP Lite

20221219 補充

  • 於此,再加入另一支 APP 於手機上。
  • 原則上,於遠端,並不會有 VM 已啟動著在等待存取。故是不是有這樣一支手機 APP 可以一鍵就做到啟動/停止遠端服務的功能。
  • app “SSH-COMMANDER”,author “Denis Spasyuk”。
  • 以上,應就不需多做說明了;不過此 APP 有些隱晦非直觀使用的地方一一說明如下,
  • 當修改某些設定,一定要使用它自帶的回上一頁,這樣設定才會變更。
  • 欲做設定編輯,手勢動作是點住圖示不動不放約兩秒放開,才會開啟。
  • 欲做執行,則是雙擊圖示。
  • 可執行 script,但因它不見得可接收到遠端某應用程式的回應,故為了能得知執行狀況,script 最後一行我們可加入 echo done 即成。
  • key 檔,是使用 putty 所 generate 出來的 ppk 檔之全部內容包含公私鑰及其它資訊;若無法使用/auth-fail 很可能是 ssh 的編碼演算法於 server/client 不一致所致;即 client 使用較舊不被支援;此參考安裝 ssh server 一文。
PHP Code Snippets Powered By : XYZScripts.com