[iPhone] 使用 iSH App 建立 OpenSSH 遠端連線作業環境的方法

本篇文章更新時間: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 基礎真的是太棒了,同一個設定檔案都可以無縫共用,如果外出沒帶電腦又有臨時需要遠端作業的需求,這就很剛好了。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

參與討論

  1. moenv.winner884
  2. Chun

2 則留言

  1. 我是小菜鳥,想請教一個問題,我想要在iPad上面安裝I S H,然後連線回到我自己的 Linux伺服器,執行一些指令,在這之前需要先建立S S H, I S H可以執行這一些並且把key發回伺服器嗎?我在網路上看到很多終端機,看起來功能都非常複雜,我唯一的需求就是連線回去伺服器執行命令而已,目前沒有其他需要在我自己的iPad上執行的東西

    1. Hi!

      我不確定你說的「執行這一些並且把key發回伺服器」是指在哪段的操作?

      但目前我的確就是透過 iSH 來連線回我的 Linux 伺服器然後做一些遠端的操作。與使用其他環境下提供的 ssh 連線並沒有差別。
      至於架構上完全都是可以自己規劃,像是你要
      iSH -> SSH -> main server -> SSH -> 其他主機
      還是要
      iSH -> SSH -> Server 1
      iSH -> SSH -> Server 2 ….
      都可以~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon