# 【VSCode & Ubuntu】超詳細教學!如何在 VSCode 遠端控制 VMWare Terminal 大家好我是 LukeTseng,會想撰寫本次文章主要是因為在虛擬機與 Windows 之間切換複製貼上、打指令太麻煩了,而且 Ubuntu 的 vim 編輯器用的不是那麼習慣XD,所以特此製作本篇文章介紹如何在 VSCode 透過 SSH 遠端控制 VMWare Ubuntu 的 Terminal。 若本篇文章部分指令或敘述有誤,麻煩各位敬請勘誤,感謝你的閱讀。 若還沒安裝過 VSCode 的可以前往該連結下載:https://code.visualstudio.com/ ## VSCode Extension : Remote - SSH 在左側欄位找到一個有四個方塊圖案的,點下去後,來到我們的擴充商店,搜尋 Remote 即可找到 【Remote - SSH】插件。 註:這邊我已經安裝過了,所以會出現 Uninstall 的字樣。 ![VSCode Extension SSH Server](https://hackmd.io/_uploads/H1yViL53gx.png) ## 虛擬機設定 開啟我們的虛擬機,開啟【Edit virtual machine settings】: ![VMWare setting 1](https://hackmd.io/_uploads/HkH2iL52ge.png) 找到 【Network Adapter】,確保 【Network Connection】 的部分是選擇 【NAT】。 ![VMWare Setting 2](https://hackmd.io/_uploads/H1JAi8c2xe.png) 好了之後按下確定,就可以開啟虛擬機了。 ## 在虛擬機安裝 OpenSSH Server 開啟虛擬機後,找到你的 Terminal,輸入以下指令: ``` sudo apt update sudo apt install openssh-server sudo systemctl enable ssh sudo systemctl start ssh ``` ![Ubuntu Terminal 1](https://hackmd.io/_uploads/ryAWgD9hlx.png) 做完上述指令後,再打一個指令 `ip a`,找出類似 `192.168.xxx.xxx` 的 ip 地址,如下方的 `192.168.xxx.xxx/24` 就是 VSCode 要連線的 ip。 ![Ubuntu Terminal 2](https://hackmd.io/_uploads/rkEkWv9ngx.png) ## VSCode : 設定 SSH 連線 使用快捷鍵 `ctrl + shift + P` 開啟命令選擇器,並輸入 `Remote-SSH: Add New SSH Host` ,並選擇該選項。 ![VSCode Command Selector](https://hackmd.io/_uploads/rk6H-v9hle.png) 會跳出類似這樣的文字框讓你輸入: ![VSCode Command TextBox](https://hackmd.io/_uploads/Skv_ZDc2gx.png) 這邊的格式如下:`ssh username@ip_address` - username 就是你在虛擬機 Linux 的用戶名稱。 - ip_address 就是剛剛用 `ip a` 查到的 ip 位址。 輸入完後,會跳出這個東西,選擇第一個預設選項就好: ![VSCode tutorial 1](https://hackmd.io/_uploads/SyWxfP92lg.png) 同樣選擇完後,VSCode 會在右下角提示你是否要連接這個 Host,這邊選擇 Connect。 ![VSCode tutorial 2](https://hackmd.io/_uploads/rk8bfwc3gg.png) 然後他就會跳出一個新的視窗表示正在連接這個虛擬機,並且 VSCode 會做一些設定,這邊就耐心等待即可。另外最上面會叫你選擇你要遠端控制的平台是哪個 OS,我這裡是 Ubuntu,所以選擇 Linux。 ![VSCode tutorial 3](https://hackmd.io/_uploads/S1P8zPqnex.png) 選擇完後可能會跳出問你要不要繼續,繼續就對了。 ![VSCode tutorial 4](https://hackmd.io/_uploads/H1ojzDc2lg.png) 繼續完後會叫你輸入你虛擬機裡面 OS 設定的密碼,由於這邊我沒擷到圖,所以各位自行操作了。 完成連線後,左下角會顯示 SSH 192.168.xxx.xxx 表示遠端控制的 IP 位址,另外 Terminal 的部分也就可以去控制 Ubuntu 了。 若這邊沒有出現 Terminal,按下 ctrl + 鍵盤上的波浪鍵,就會出現了。 ![VSCode tutorial 5](https://hackmd.io/_uploads/r1qy7D9hxl.png) 這邊試了幾個簡單指令,確實是可以運作的: ![VSCode Terminal Test](https://hackmd.io/_uploads/SJSO7D52lx.png) ## 部分疑難雜症 如果持續連線不上的話,可以在虛擬機的 Terminal 上輸入這個指令看看:`sudo ufw allow ssh` 並且確認 SSH Server 是不是開著的狀態:`sudo systemctl status ssh` 若沒有開著則再輸入一次指令讓他開著:`sudo systemctl start ssh` 最後的方式是在你的 Windows 主系統資料夾中 `C:\Users\用戶名\.ssh` 打開 `known_hosts` 並刪除對應的 IP 紀錄,之後再做一次操作。 或打開 Windows 系統設定,在【系統】->【選用功能】的地方,找看看是否有安裝 OpenSSH 伺服器跟 OpenSSH 用戶端這兩個插件。 ![Windows Setting Screen](https://hackmd.io/_uploads/r1qSNPq3ge.png) 另外也請確認你的虛擬機連線的網路是否跟你的主系統連線的網路是一樣的,也就是連到相同的區域網路。 ## 參考資料 [Connect a VM with VS Code for Remote Development - DEV Community](https://dev.to/arabian619/connect-a-vm-with-vs-code-for-remote-development-50n7) [Remote development over SSH | Visual Studio Code](https://code.visualstudio.com/docs/remote/ssh-tutorial) [How to use VS Code to work on a Remote Machine - Mantrax Software Solutions](https://www.mantrax.io/use-vscode-to-code-on-remote-machine/) [ssh - Connecting Visual Studio Code (VSCode) to VirtualBox VM - Stack Overflow](https://stackoverflow.com/questions/58880989/connecting-visual-studio-code-vscode-to-virtualbox-vm) [VSCode Remote SSH - Linux VM Inside VMWare - YouTube](https://www.youtube.com/watch?v=w8KJHY3Rplc)