同學您好
我覺得你問的問題很好,大概就我能力範圍內說明,不過因為我專業也不是網路,可能解說會沒那麼專業,也歡迎其他人幫忙補充想法
1. 使用 Wireguard 而不是 ssh 的原因
VPN 跟 SSH 本質上還是不同的,SSH 是讓管理員遠端操控某台機器,而 VPN 則是讓你的電腦和其他電腦可以構成一個虛擬的區域網路,舉個例子,如果你想跟同學玩 CS 1.6 的多人遊戲(希望我們還在同一個世代內QQ),但你們不在同一個區域網路內,用 SSH 是沒辦法做到的,需要用 VPN 才能做到。
通常 VPN 會用在像是跨國公司的運作上,或是遠距工作,公司的某些網路服務會限制只能內網使用,透過 VPN 的機制讓不同的辦公室接入同一個內網。
2. 設定檔與 Client、Server 的設定
因為以 VPN 的角色來說,是「你連入助教設定的區域網路」,當你連入助教的區域網路後,才會由 Online Judge 這邊發起 ssh / ftp 等等的連線到你的電腦
如果沒有 VPN 就直接做 SSH 連線也可以,但問題是
1. 大部分同學沒有固定 IP
2. 讓 ssh 在網路上裸奔(沒有防火牆、沒有管理)有一定程度的危險,網路上有很多無聊的人會寫程式自動掃描所有的 IP 去看看有沒有誰忘記升級 ssh / mysql / ftp ... etc 然後做自動化的攻擊,如果你把 ssh 開在網路上(listen 0.0.0.0、public ip),可以去看看 Log,就會發現有一堆來暴力嘗試密碼的記錄
不過更精確來說 Wireguard 比較沒有所謂的 Client-Server 架構,它比較是 Peer to Peer 的 VPN 架構。
3. 為什麼是 Online Judge 產生 private & public key
你的敘述正確,這邊延伸推薦可以去閱讀「非對稱加密」相關的文章,可以更瞭解 private key & public key 是什麼(可以解答你最後的問題)。
至於為什麼這次是 Online Judge 產生 Private key 然後在請你們複製走,我個人的想法是(這題不是我出的XD),單純為了簡化流程,正常流程是,你產生 private key & public key 後要把 public key 提供給我們,我們在進機器去設定,但如果 150 位同學都這樣做,助教會忙死,當然也可以寫成系統自動填入,但每次在伺服器填入新的 public key 都會需要重開 wireguard server,會讓正在線上的同學斷線,為了方便,所以改成助教這邊幫每位同學產生不同的 private key。
在 2021年10月2日 於 下午5:22:06, ianl...@gmail.com (ianl...@gmail.com) 寫下: