VSCODE 設定遠端偵錯環境

2022-09-14 06:01:20

以下內容為本人的著作,如需要轉載,請宣告原文連結 微信公眾號「englyf」https://www.cnblogs.com/englyf/p/16691460.html


我的需求是,在Windows桌面環境下,通過 VSCODE 遠端偵錯在伺服器(或者其它遠端主機)的工程程式碼。其實就是提供一個方便快捷的方式,讓你可以在原生的 VSCODE 環境裡編輯或者檢視遠端主機的目錄檔案罷了。

這裡說下我的設定過程:(首先,程式猿有個習慣把序號從0開始,莫要見怪)

0. 安裝 SSH

在命令列視窗裡輸入 ssh 然後回車看看輸出,確認一下是否已經安裝了ssh。只要不是提示找不到ssh,那麼就表示本機已安裝了ssh。
如果很不幸本地還沒安裝,那就搜尋一下ssh的安裝教學吧,估計隔壁老王就有。
實在太懶不想搜的話,這裡有條懶蟲[https://sourceforge.net/projects/sshwindows/]送給兄dei你。

...

到這裡假設已經確認好安裝了ssh,下面會用ssh生成金鑰對,包括公鑰和私鑰,這會被用到繫結伺服器和本地計算機便於免密碼登入。

C:\Users\我的使用者名稱>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\我的使用者名稱/.ssh/id_rsa):

輸入回車,儲存金鑰對到預設的目錄 C:\Users\我的使用者名稱\.ssh 中。

Enter passphrase (empty for no passphrase):

輸入回車,設定金鑰對保護密碼為空(如果對安全性要求比較高,建議還是輸入一下密碼再回車)。

Enter same passphrase again:

這一步只是重複輸入上一步輸入的密碼,如果上一步設定密碼是空,這一步也直接輸入回車。

Your identification has been saved in C:\Users\XXX/.ssh/id_rsa.
Your public key has been saved in C:\Users\XXX/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXX
The key's randomart image is:
+---[RSA 3072]----+
|@@==++ .         |
XXXX
+----[SHA256]-----+

此時,公鑰已經儲存到 C:\Users\xxx\.ssh\id_rsa.pub 檔案中,私鑰已經儲存到 C:\Users\xxx\.ssh\id_rsa 檔案中。
而我用的是阿里雲的伺服器,它會要求使用後臺操作介面生成私鑰並自動下載到本地,儲存的格式是(.pem)格式。

1. 開啟已安裝的 VSCODE

如果還沒安裝就裝一個唄,這裡邊的過程沒什麼可以講的。不過我有個推薦的地方如圖,尤其是新增到右鍵選單這裡:

2. 安裝 VSCODE 外掛

VSCODE 自帶的外掛市場裡搜尋以下外掛並且安裝:

外掛名 用途
Remote - SSH 用SSH開啟遠端機器的資料夾而且可以應用 vscode 的所有功能
Remote - SSH: Editing Configuration Files 編輯 SSH 組態檔

3. 編輯 SSH 組態檔

VSCODE 左側邊欄裡找到 Remote Explorer 一項,點選進去。

在彈出的視窗裡,下拉式選單選擇 SSH Targets (這裡的目的是連結遠端伺服器),再點選設定按鈕,在彈出來的選擇視窗裡,如圖

選擇第一個(自己使用者目錄下的 config 檔案)。按照下面的提示編輯內容並儲存。

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host 自己起個名字,你喜歡就好
    HostName 遠端伺服器的IP地址
    User 系統使用者名稱
    Port 埠號,SSH一般都是22
    IdentityFile 金鑰對裡的私鑰的本地儲存位置(用雙引號括起來)

然後在 VSCODE 左邊的視窗裡SSH TARGETS下面可以看到新新增的主機,預設是未連線狀態。

4. 連線主機

在上一步新增的主機視窗裡,右鍵選擇 Connect to Host in Current Window 就可以在當前視窗連線到指定的遠端主機了。

既然連線成功了(可能也會失敗,後邊分析原因),那麼遠端主機的檔案怎麼瀏覽檢視或者編輯呢?
VSCODE 左側邊欄裡找到 Explorer 一項,點選進去。

如果還沒有檔案被開啟,那麼在左邊的視窗可以看到一欄 NO FOLDER OPENED,點選開啟,再點選 Open Folder 按鈕,在中間會彈出下拉式選單,在裡邊可以填上想要開啟的遠端主機的目錄。預設顯示 /root/ 目錄了,我這裡直接填我的一個 Django 的工程位置。

說回來,上邊說到連線可能會有不成功的情況。我這裡就曾碰到這樣的錯誤,點選連線後彈出下面的警告窗。

意思就是說 無法穩定連線到我的遠端主機xxx,然後也可以看到輸出視窗會列印連線的過程紀錄檔。細心點的話,可以從紀錄檔裡看到下面的關鍵資訊:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[03:12:56.641] > @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions for 'G:\\ProjectWorkstation\\ali-cloud-key-pair\\id_rsa.pem' are too open.
> It is required that your private key files are NOT accessible by others.        
> This private key will be ignored.
> Load key "G:\\ProjectWorkstation\\ali-cloud-key-pair\\id_rsa.pem": bad permissions
> [email protected]: Permission denied (publickey).

意思就是說我這私鑰檔案[存放在 G:\ProjectWorkstation\ali-cloud-key-pair\id_rsa.pem]沒有被保護起來,專業點的說法是檔案設定的許可權太過寬鬆了,得改,否則就是不給通過。好吧,我改!下面說下我的設定過程。

1)刪掉不相關的使用者所有者,只保留當前使用者

找到上邊提到的那個檔案[G:\ProjectWorkstation\ali-cloud-key-pair\id_rsa.pem],滑鼠右鍵選擇 屬性,在彈出來的 屬性 視窗選擇 安全,如圖



點選 高階,在彈出的 高階安全設定 視窗選擇 禁用繼承,然後一路點選確認並退出 高階安全設定 的視窗。
接著在 屬性 視窗點選 編輯,在彈出的 許可權 視窗裡將所有的組或使用者名稱刪掉,再點選 新增,把自己的當前使用者新增上去。
(至於怎麼找到當前使用者,這裡不展開了,你可以在其它地方找到這方面的資訊,逃。。。)

2)僅保留讀取許可權

許可權視窗,選中上面新建的使用者,編輯許可權,僅保留 讀取即可。如圖


好了,點選確定並退出。

再重新試一下連線主機吧,相信你的問題已經解決了_