Windows主機(jī)用SSH連接Linux虛擬機(jī)進(jìn)行開發(fā)
時(shí)間:2023-06-26 13:15:02 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-06-26 13:15:02 來(lái)源:網(wǎng)站運(yùn)營(yíng)
Windows主機(jī)用SSH連接Linux虛擬機(jī)進(jìn)行開發(fā):
1-SSH(安全外殼協(xié)議)
WHY?
大家在用Linux虛擬機(jī)的時(shí)候都會(huì)遇到一個(gè)問(wèn)題,就是在Linux圖形界面上使用Vscode,即使分配了很多的內(nèi)存也會(huì)非??D,導(dǎo)致開發(fā)體驗(yàn)極其不絲滑。
筆者在嘗試連接的時(shí)候遇到很多卡頓,這里寫一個(gè)記錄分享。
SSH
SSH 為Secure Shell的縮寫,由 IETF 的網(wǎng)絡(luò)小組(Network Working Group)所制定;SSH 為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議。SSH 是較可靠,專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠(yuǎn)程管理過(guò)程中的信息泄露問(wèn)題。SSH最初是UNIX系統(tǒng)上的一個(gè)程序,后來(lái)又迅速擴(kuò)展到其他操作平臺(tái)。SSH在正確使用時(shí)可彌補(bǔ)網(wǎng)絡(luò)中的漏洞。SSH客戶端適用于多種平臺(tái)。幾乎所有UNIX平臺(tái)—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平臺(tái),都可運(yùn)行SSH。
統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,如:ftp、pop和telnet在本質(zhì)上都是不安全的,因?yàn)樗鼈冊(cè)诰W(wǎng)絡(luò)上用明文傳送口令和數(shù)據(jù),別有用心的人非常容易就可以截獲這些口令和數(shù)據(jù)。而且,這些服務(wù)程序的安全驗(yàn)證方式也是有其弱點(diǎn)的, 就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式, 就是“中間人”冒充真正的服務(wù)器接收你傳給服務(wù)器的數(shù)據(jù),然后再冒充你把數(shù)據(jù)傳給真正的服務(wù)器。服務(wù)器和你之間的數(shù)據(jù)傳送被“中間人”一轉(zhuǎn)手做了手腳之后,就會(huì)出現(xiàn)很嚴(yán)重的問(wèn)題。通過(guò)使用SSH,你可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,這樣"中間人"這種攻擊方式就不可能實(shí)現(xiàn)了,而且也能夠防止DNS欺騙和IP欺騙。使用SSH,還有一個(gè)額外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過(guò)壓縮的,所以可以加快傳輸?shù)乃俣?。SSH有很多功能,它既可以代替Telnet,又可以為FTP、PoP、甚至為PPP提供一個(gè)安全的"通道"[1]。
2-Visual Studio Code -SSH
Visual Studio Code Remote - SSH擴(kuò)展允許您在任何遠(yuǎn)程計(jì)算機(jī)、虛擬機(jī)或具有正在運(yùn)行的 SSH 服務(wù)器的容器上打開遠(yuǎn)程文件夾,并充分利用 VS Code 的功能集。一旦連接到服務(wù)器,您就可以與遠(yuǎn)程文件系統(tǒng)上任何位置的文件和文件夾進(jìn)行交互。
由于擴(kuò)展直接在遠(yuǎn)程機(jī)器上運(yùn)行命令和其他擴(kuò)展,因此無(wú)需在本地機(jī)器上放置源代碼即可獲得這些好處。
這讓 VS Code 可以提供
本地質(zhì)量的開發(fā)體驗(yàn)——包括完整的 IntelliSense(完成)、代碼導(dǎo)航和調(diào)試——
無(wú)論您的代碼托管在哪里。
3-開始連接
本地:還必須安裝 受支持的OpenSSH 兼容 SSH 客戶端。
遠(yuǎn)程 SSH 主機(jī):一個(gè)正在運(yùn)行的SSH 服務(wù)器:
- x86_64 Debian 8+、Ubuntu 16.04+、CentOS / RHEL 7+。
- ARMv7l (AArch32) Raspberry Pi OS(以前稱為 Raspbian)Stretch/9+(32 位)。
- ARMv8l (AArch64) Ubuntu 18.04+(64 位)。
- Windows 10 / Server 2016/2019 (1803+) 使用官方 OpenSSH 服務(wù)器。
- 啟用遠(yuǎn)程登錄的macOS 10.14+ (Mojave) SSH 主機(jī)。
- 遠(yuǎn)程主機(jī)需要 1 GB RAM,但建議至少 2 GB RAM 和 2 核 CPU。
其他
glibc
基于 x86_64、ARMv7l (AArch32) 和 ARMv8l (AArch64) 的 Linux 發(fā)行版如果具有所需的先決條件,它們應(yīng)該可以工作。有關(guān)啟動(dòng)和運(yùn)行社區(qū)支持的發(fā)行版的信息先決條件和提示,請(qǐng)參閱使用 Linux 進(jìn)行遠(yuǎn)程開發(fā)一文。
雖然 ARMv7l (AArch32) 和 ARMv8l (AArch64) 支持可用,但由于在擴(kuò)展中使用 x86 本機(jī)代碼,安裝在這些設(shè)備上的某些擴(kuò)展可能無(wú)法正常工作。
安裝
要開始,您需要:
- 如果尚未安裝OpenSSH 兼容的 SSH 客戶端,請(qǐng)安裝該客戶端。
- 安裝Visual Studio Code或Visual Studio Code Insiders。
- 安裝遠(yuǎn)程開發(fā)擴(kuò)展包。
SSH主機(jī)設(shè)置
- 如果您沒(méi)有設(shè)置 SSH 主機(jī),請(qǐng)按照Linux、Windows 10 / Server (1803+)或macOS SSH 主機(jī)的說(shuō)明進(jìn)行操作,或者在 Azure 上創(chuàng)建一個(gè)VM。
- 可選:如果您的 Linux 或 macOS SSH 主機(jī)將被多個(gè)用戶同時(shí)訪問(wèn),請(qǐng)考慮在 VS Code用戶設(shè)置中啟用Remote.SSH: Remote Server Listen On Socket以提高安全性。
在設(shè)置編輯器中:
有關(guān)詳細(xì)信息,請(qǐng)參閱提示和技巧文章。
- 可選:雖然支持基于密碼的身份驗(yàn)證,但我們建議為您的主機(jī)設(shè)置基于密鑰的身份驗(yàn)證。有關(guān)詳細(xì)信息,請(qǐng)參閱提示和技巧文章。
連接到遠(yuǎn)程主機(jī)
要首次連接到遠(yuǎn)程主機(jī),請(qǐng)執(zhí)行以下步驟:
- 通過(guò)從終端/PowerShell 窗口中運(yùn)行以下命令來(lái)驗(yàn)證您是否可以連接到 SSH 主機(jī),并根據(jù)需要進(jìn)行替換
user@hostname
。
ssh user@hostname # Or for Windows when using a domain / AAD account ssh user@domain@hostname
這里我的Ubuntu虛擬機(jī)是是 cs18@10.0.2.15 這個(gè)網(wǎng)段和主機(jī)的 ip
http://192.168.XXX.XXX 不是一個(gè)網(wǎng)段,故在這一步就已經(jīng)失敗了。
修改的方法是,在virtualBox里把網(wǎng)絡(luò)連接方法從 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)修改為橋接網(wǎng)卡,然后再重啟,就會(huì)發(fā)現(xiàn)虛擬機(jī)的ip地址也變成了
http://192.162.XXX.XXX 。
- 在 VS Code 中,從命令面板(F1、Ctrl+Shift+P )中選擇Remote-SSH: Connect to Host...并使用與步驟 1 相同的方法。
user@hostname
- 如果 VS Code 無(wú)法自動(dòng)檢測(cè)到您正在連接的服務(wù)器類型,則會(huì)要求您手動(dòng)選擇類型。
選擇平臺(tái)后,它將存儲(chǔ)在屬性下的VS Code 設(shè)置
remote.SSH.remotePlatform
中,因此您可以隨時(shí)更改它。
- 片刻之后,VS Code 將連接到 SSH 服務(wù)器并自行設(shè)置。VS Code 將使用進(jìn)度通知讓您保持最新狀態(tài),您可以在
Remote - SSH
輸出通道中看到詳細(xì)的日志。
提示:連接掛起或失敗?有關(guān)解決常見(jiàn)問(wèn)題的信息,請(qǐng)參閱故障排除提示。
如果您看到有關(guān) SSH 文件權(quán)限的錯(cuò)誤,請(qǐng)參閱修復(fù) SSH 文件權(quán)限錯(cuò)誤部分。 - 連接后,您將處于一個(gè)空窗口中。您始終可以參考狀態(tài)欄來(lái)查看您連接到的主機(jī)。
單擊狀態(tài)欄項(xiàng)目將在您連接時(shí)提供遠(yuǎn)程命令列表。
- 然后,您可以像在本地一樣使用File > Open...或File > Open Workspace...打開遠(yuǎn)程計(jì)算機(jī)上的任何文件夾或工作區(qū)!
絲滑!