2017-04-03

Termux 設定 SSH Server

阿舍在上一篇文已經簡單介紹過 Termux 的安裝,而這一篇,就要來說明如何在 Termux 上設定和啟動 SSH Server 來讓阿舍可以用電腦來 SSH 過去操作,不過,在開始設定之前,要先來說明一下,有關 Termux 上跑 SSH Server 的一個限制,那就是,Termux 只能用憑證來登入,不能用帳號和密碼的方式,本來,阿舍覺得這樣很麻煩,因為,阿舍如果要在好幾支手機上跑 Termux 來用的話,就要一台一台的去產出憑證,不過,後來,阿舍就發現,用憑證反而會比較容易管理哩 ...



如果你在安裝好 Termux 之後,還沒有執行過建立相關資料夾和連接的指令的話,阿舍建議還是先執行一下,這樣,一些 Termux 預設的資料夾才會存在,之後,在安裝和設定時,比較不會出現一些人家沒有你卻有的問題出現哩 ! 有關產生 Termux 資料夾和連結的方式,請參考阿舍寫的這一篇 ...

OK ! 再來,就要開始來進入正題了,而第一步,那當然就是要安裝 OpenSSH 這個套件了,因為,Termux 預設是沒有安裝這個 OpenSSH 的,請執行下面的指令來安裝。

$ apt update
$ apt install openssh

安裝好之後,接下來,就是要產生憑證的公鑰和私鑰來給要用 SSH 連到這支手機的 SSH Client 用,請使用下列指令來產生,中間會問說要存放的位置,這個建議用預設的好,而另一個則是要輸入 Passphrase,也就是這個憑證檔的密碼,阿舍為了方便,所以,就連按了二次 Enter 鍵來表示不使用 Passphrase 哩 ! ... 呵 !

$ ssh-keygen

上面的指令操作順利的話,就會在 .ssh 資料夾裡產出 id_rsa 和 id_rsa.pub 這二個私鑰和公鑰檔案,接下來,就是有點多指令的部份了,請依日照下面的順序來操作,這樣,就會新增一個 authorized_keys 檔,裡面會存有公鑰資料,同時,也會改好檔案和資料夾的權限。

$ touch ~/.ssh/authorized_keys
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh

以上,就算是完成手機的操作部份,再來,就是阿舍覺得有點麻煩的地方了... 就是要把 id_rsa 和 id_rsa.pub 這二個檔弄到阿舍 MacBook 上,因為,阿舍覺得還要拿 USB 線插到電腦有點累,而且,還要先把這二個檔案複製到其它資料,另外 ,MacBook 要啟動 Android 的讀檔軟體等等等 ... 不只有一點點的麻煩哩 .... 所以,阿舍就再想了一下 ...

其實,不用 USB 線的方法還滿多的哩 ! 可以用這個方法或是這個方式,不過,前題都是要在同一個網段,最後,阿舍是用第一種方式,就是在 Termux 上用下面的指令來安裝 Python 後,透過 Web 來把檔案下載到阿舍的 Macbook 上的。

# 這樣安裝的是 Python 3 的版本
$ apt install python

終於把 id_rsa 和 id_rsa.pub 這二個檔案弄到阿舍 MacBook 上的 .ssh 資料夾之後,要先把 id_rsa 的這個檔案的權限調整一下。

$ chmod 600 ~/.ssh/id_rsa

調好之後,就可以來用 ssh 指令連線了,以阿舍要連的手機的 IP 位址是 192.168.1.188 及 id_rsa 檔案是放在 ~/.ssh 資料夾下為例,連線的指令就是下面這樣 ( Termux 上的 SSH Server 預設是使用 8022 埠 )。

$ ssh 192.168.1.188 -p 8022 -i ~/.ssh/id_rsa

如果順利的話,應該就可以用 SSH 來連上手機了,不過,理論上,應該是不會順利連上才對 ... 因為阿舍還沒提到如何啟用 SSH Server 哩 ... 呵呵 ! 請回到手機上的 Termux 畫面,執行下面第一行指令,就可以把 SSH Server 給啟動了,而如果你有遇到問題,想要做測試找原因的話,則是可以用下面第二行的指令來開 Debug 模式,然後,要結束 SSH Server 的話,就要下面第三行的指令哩 ...

# 正常啟動
$ sshd

# 偵錯模式
$ sshd -d

#停止 sshd
$ pkill sshd

好了,現在再用 ssh 指令來連線,就應該可以順利的連上了哩 ....

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

4 則留言 :

匿名 提到...

大大好,我看下面這一篇說,如果是A要ssh到B,應該是A產生公鑰和私鑰,然後把A的公鑰放入B內,提供您參考:
SSH 公開金鑰應是哪一方產生? - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 https://ithelp.ithome.com.tw/questions/10188479

匿名 提到...

請不要透過網路傳輸你的私鑰

Shaun Lin 提到...

請問 sshd config位置在哪里

Arthur 提到...

Hello,

依下列的官方文件的說明,應該是會有個檔案在 $PREFIX/etc/ssh/sshd_config 這裡,不過,阿舍也沒有找到,建議可以手動建立或複製過來試試。

https://wiki.termux.com/wiki/Remote_Access

提供參考囉 ...

張貼留言

歡迎留言提問和討論 .... 😁