[FR] 多重使用者
NatLee opened this issue · 4 comments
需設計一方法可sync使用者名單
- 後端記錄的user list
- SSH server container的user list
並且要確保兩個名單在任何時候都是一致的
這樣不同使用者能夠在自己的~/.ssh
中記錄authorized_keys
避免跨到其他使用者的區域
必須先設計一個model能夠更新backend_ssh_key中的config
像是app authorized_keys一樣
當資料庫增刪修改時會自動trigger更新config
新使用者進來的情境會是:
- 當新的使用者註冊時,系統會幫該使用者註冊一組ssh key放在
~/.ssh/<username>
- 同時,系統會在資料庫config model的table新增一筆使用者的資料(含username、key的位置、Host),其中
Host
可能就使用uuid自動生成,因為後端這邊的SSH功能用途目前只有web terminal - 新增資料之後,會透過signal去trigger更新config(這邊可能要注意是不是會影響到其他功能以及race condition)
這樣做是避免所有使用者在新增tunnel的時候
無意識的都把同一把web-service
的key加到自己的endpoint
然後,telepy-web
去連到telepy-ssh
雖然沒關係
但是因為使用者如果要能夠反向的話,也得先連到telepy-ssh
如果都連到同個帳號的話,就會有問題了
所以在一開始創帳號的時候,就必須再幫使用者在telepy-ssh
中創一個無權限帳號才行
然後自己只能去吃自己的authorized_keys
殘念,根據官方論壇的問答
https://discourse.linuxserver.io/t/additional-users-after-openssh-server-installation/2090
現在使用的image只支援單一使用者
如果這個專案照論壇上所說,去開很多container
那勢必要mount docker的sock,但是太危險
如果自己寫一個Dockerfile,自由度會比較高
但這坑越挖越大QQ
太可怕了 這個issue先close
在這個issue解決了使用者可以反連回來去使用interactive shell的問題
使用者反連回來都只會echo一句話,所以上面說的怕亂連亂改問題解決了
然後若有使用者偷偷去反向其他port的endpoint也沒關係
因為其他endpoint本來就是創建的人才有金鑰🔑
再說,web terminal也是得驗前端JWT token才會開啟session
就算web service這邊key一樣,也可以因為JWT token使用者不同去過濾
回到正題,多重使用者的驗證可以直接建立在web server端
解掉這個issue的工作就是在table內去新增使用者欄位
還有判斷各個API哪些需要區分使用者