本篇文章更新時間:2024/01/16
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
前幾天才在粉絲頁上寫道自己找一個在 iPhone 手機上管理遠端連線主機的小困擾。
終於給我發現 iSH App 這個好東西!原理就是在 App 中跑一個作業系統 (Alpine Linux)。
心想,有 Linux 就好搞定拉~ 所以本篇就是筆記我處理這環境用來與 Mac 相容使用 OpenSSH 服務的部分。
基本上這款 App 完全無害,不怕搞壞,重建環境超快速的工具!
如果下面測試流程有誤,又或是自己覺得把系統弄髒想還原,其實只需要把 App 砍了,重新下載過,就完全重置了。
前置需求
- iOS 裝置,有開啟 iCloud 檔案同步功能,並安裝好
iSH
App。 - 具備 OpenSSH 使用的經驗。
- 使用連線控制組態檔案
config
來管理連線。
Mac 上我在 iCloud 雲碟建立了一個資料夾叫「Keys」。裡面放置了接下來要給這個 iSH App 用的檔案,包含遠端連線的組態檔案(config
)、電腦中紀錄的這些主機金鑰,還有一個快速安裝用的 Shell Script 程式檔案(init.sh
)。
init.sh
的程式檔案內容如下:
#!/bin/ash
echo "http://dl-cdn.alpinelinux.org/alpine/latest-stable/main" > /etc/apk/repositories
echo "http://dl-cdn.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories
apk upgrade && apk fix
apk add openssh git openssl curl wget keychain sed
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
ssh-keygen -A
passwd
mkdir /root/.ssh
cp /iphone/iphone_config /root/.ssh/config
cp /iphone/id_rsa* /root/.ssh/
chmod 600 /root/.ssh/id_rsa*
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
cat < /root/.profile
cp /iphone/iphone_config /root/.ssh/config
cp /iphone/id_rsa* /root/.ssh/
chmod 600 /root/.ssh/id_rsa*
# 啟動 SSH 服務
/usr/sbin/sshd
# 使用 keychain 運作 SSH Agent 服務
/usr/bin/keychain /root/.ssh/id_rsa
source /root/.keychain/localhost-sh
# 讓 iSH App 支援背景運作
cat /dev/location > /dev/null &
EOF
echo "DONE!"
exit
部署 iSH Alpine Linux 環境
iOS 裝置安裝好 iSH
後,一打開 App 就會是登入進 Linux 的歡迎畫面。
首先是要把準備好在 iCloud 雲碟上的 keys
目錄給掛載進 iSH App 內。
mkdir /iphone && mount -t ios . /iphone
先是建立好 /iphone
目錄後,呼叫 mount
指令把 ios
裡的共享資料夾給掛進去系統內此目錄使用。
這時候會彈出一個對話視窗,要選擇想掛載進去 App 的目錄,選到 iCloud 內剛剛那個 keys
目錄就可以。
確認有掛載成功的指令就是看看檔案有沒有進來: ls /iphone
有看到檔案就是代表同步進來了。
如果沒有,那可能是因為預設不會主動去下載 Mac 這邊上傳的檔案,只是顯示個「形式」。所以實際上還要去點選整個 keys
目錄來執行「下載」的功能,把檔案抓回到 iOS 裝置內。
再來呼叫 init.sh
來部署環境:
chmod +x /iphone/init.sh && /iphone/init.sh
沒意外就可以把整個 OpenSSH 的運作環境處理完囉~
後記
主要指令部分,為求簡單先在 Mac 上寫好 Ash 的 Shell Script,關鍵都在那 init.sh
程式中。
按照網路上大多的教學,甚至是 iSH 自己的 Wiki 也其實沒有探究把 OpenSSH 服務安裝到完整的部分。如果只是把 OpenSSH 安裝好就有最基本的 Client 連線工具 SSH 指令可以用。
但如果像我有需要使用 Agent Forwarding 功能的話,只是把 ssh-agent
開起來還不夠,要掛進常駐服務中執行才可以,所以我使用 keychain
工具處理。
而如果想讓 Mac 使用 SSH 連線進入 iPhone (iOS) 的話,就要把 Server 組態的部份處理好。這邊為求安全,把密碼功能直接關了改純用 Key Authentication 方式進行。
只要找到 iOS 裝置的區網 IP(假設 192.168.11.22
),那就可以在 Mac 或其他裝置使用:
ssh [email protected] -i /path/to/key
來連線你的 iOS 裝置操作。
整體總結能夠使用與 Mac 環境一樣的 OpenSSH 基礎真的是太棒了,同一個設定檔案都可以無縫共用,如果外出沒帶電腦又有臨時需要遠端作業的需求,這就很剛好了。
我是小菜鳥,想請教一個問題,我想要在iPad上面安裝I S H,然後連線回到我自己的 Linux伺服器,執行一些指令,在這之前需要先建立S S H, I S H可以執行這一些並且把key發回伺服器嗎?我在網路上看到很多終端機,看起來功能都非常複雜,我唯一的需求就是連線回去伺服器執行命令而已,目前沒有其他需要在我自己的iPad上執行的東西
Hi!
我不確定你說的「執行這一些並且把key發回伺服器」是指在哪段的操作?
但目前我的確就是透過 iSH 來連線回我的 Linux 伺服器然後做一些遠端的操作。與使用其他環境下提供的 ssh 連線並沒有差別。
至於架構上完全都是可以自己規劃,像是你要
iSH -> SSH -> main server -> SSH -> 其他主機
還是要
iSH -> SSH -> Server 1
iSH -> SSH -> Server 2 ….
都可以~