解決方案一:
查找原因
命令 ps ajx | grep vscode
可能會看到一下這堆信息(如果沒有大概率不是這個原因導致)
這堆信息的含義:當你使用 vscode
遠程登錄服務器時,我們遠程機器服務端要給你啟動一個叫做 vscode server
的進程,都由它來進行服務器和客戶端之間信息同步,包括你做的所有文件更新編輯的操作:使用 gdb
調試與各種代碼操作。
而我們 vscode
遠程登不上機器,可能不是用戶自己的原因,可能是有 vscode
它自己的 bug
當 vscode
關閉,這些 vscode server
的進程服務應該也會被關閉(就不會出現上面這坨信息),若沒關閉成功就導致出現這坨信息,最終你登錄不上
解決方法
命令 ps ajx | grep vscode| awk '{print $2}' | xargs kill -9
目的是,將 vscode server
的進程全部篩選出來,然后通過 awk '{print $2}'
定位這些進程的第二列顯示的進程 PID
,通過 xargs kill -9
殺掉這些進程(它們本不應該存在)
學這個方法后面某一天我的遠程機器也登錄不上去了,用解決方案一直接解決
解決方案二:
查找原因
有一種情況是:vscode
編譯器更新速度快于 vscode
下插件的速度,導致 vscode
更新了,相關插件還是舊版本,可能出現版本兼容性問題,就是舊版本插件不適配新 vscode
,此時就需要對這些插件進行一些處理。
解決方法
這種方法開始前,建議你將自己 vscode
上已經配置的所有插件記錄下來(因為后面會將這些插件給清空,然后需要重裝)
1、使用工具登錄你的遠程機器(如 xshell
),切換到你對應登錄用戶的家目錄下(即你曾經用哪個用戶登錄的 vscode
,就到哪個用戶下),通常命令 cd ~
切換到家目錄下
2、命令 ls -la
:可以找到 .vscode-server
這個目錄文件
命令 cd .vscode-server
:可以看到 vscode
的一些配置文件,其中 extensions
就是擴展插件
3、命令 cd ..
:退出當前目錄 .vscode-server
命令:rm -rf .vscode-server
:強制刪除該目錄
目的是:將所有配置插件刪除,因為你根本無法知道是哪個插件的兼容性問題,影響到你登錄不上
因此需要無差別攻擊
4、最后回到 vscode
將插件全部下載回來,重新使用 Remote SSH
插件登錄遠程服務器,發現就可以成功了
(我就是這樣成功的,太久沒有用 vscode
,導致以前下載的插件版本更新沒跟上 vscode
)