(一次比較艱辛的“摸魚”過程,但成功免密連接遠(yuǎn)程服務(wù)器之后感覺很不錯!?。。?/p>
1、效果圖
先領(lǐng)略一下最終的效果,

effect_picture.png
可以在VS Code中創(chuàng)建、刪除、編輯服務(wù)器端的文件,當(dāng)然也有linux的命令行。還是挺方便的~
2、從VS Code的應(yīng)用擴(kuò)展商店添加Remote Development插件
- ① 點(diǎn)擊左側(cè)欄下方的
extensions圖標(biāo)
extensions.png - ② 輸入
remote,彈出相關(guān)擴(kuò)展 - ③ 找到
Remotem Development,點(diǎn)擊install
(在這里一定要安裝Remotem Development,包含的其他擴(kuò)展會自動安裝)
fig2_1.png
安裝完成后,多了橢圓形標(biāo)記的Remote Explorer圖標(biāo)。
Remote-Explorer.png
在ENABLED下會出現(xiàn)Remote相關(guān)的5個(gè)插件,如下圖所示:
fig2_2.png
3、配置Remote SSH
- ① 在VS Code中,
Ctrl + ,,輸入show login terminal,勾選
fig3_1.png - ② 在VS Code中,
Ctrl + Shift + P,輸入remote-ssh
fig3_2.png -
③ 通常選擇第一個(gè),
fig3_3.png - ④ 添加配置信息
fig3_4.png
這里IdentityFile為下面步驟生成的本地私鑰路徑
如果有多個(gè)連接,可以配置多個(gè)。因此一臺PC可以連接到多個(gè)遠(yuǎn)程服務(wù)器端
4、配置免密登錄
VS Code通過SSH遠(yuǎn)程服務(wù)連接遠(yuǎn)程服務(wù)器,每次連接、打開文件夾、執(zhí)linux命令等都需要輸入密碼,非常麻煩。
可以通過配置免密登錄避免每次操作時(shí)都輸入密碼。
4.1 本地PC端本地安裝SSH
Windows系統(tǒng)可以安裝OpenSSH或者通過Git安裝SSH,方法不在這里贅述。
在命令行中輸入如下命令表示本地SSH安裝成功:
- ①
Win + R-->cmd-->確定 - ②
ssh
fig4.1_1.png
4.2 生成本地PC端密鑰
- ①
cd .\.ssh,進(jìn)入.ssh目錄
fig4.2_1.png - ②
ssh-keygen -t rsa,生成密鑰。出現(xiàn)以下選項(xiàng)時(shí):
Enter file in which to save the key:直接回車
Enter passphrase:直接回車
Enter same passphrase again:直接回車
fig4.2_2.png - ③
dir/b查看創(chuàng)建好的密鑰文件
/b是僅列出文件名稱
id_rsa是密鑰
id_rsa.pub是公鑰
fig4.2_3.png
記得回去將id_rsa的路徑添加到3④的IdentityFile中!
4.3 上傳公鑰至服務(wù)器端個(gè)人所在的根目錄的.ssh/下
由于是非root用戶,所以需要在遠(yuǎn)程服務(wù)器進(jìn)行以下步驟:
- ① 若不存在
.ssh/,手動創(chuàng)建
mkdir .ssh

fig4.3_1.png
- ② 進(jìn)入
.ssh/
cd .ssh/

fig4.3_2.png
- ③ 使用Xftp等工具(或者
scp命令)將id_rsa.pub上傳至該目錄
fig4.3_3.png - ④ 將
id_rsa.pub的內(nèi)容追加至authorized_keys
cat id_rsa.pub >> authorized_keys
ls

fig4.3_4.png
authorized_keys文件可以按行存儲多臺本地PC的公鑰,因此可以使用不同的本地PC連接同一個(gè)遠(yuǎn)程服務(wù)器端
- ⑤ 修改權(quán)限
修改authorized_keys權(quán)限為600
chmod 600 authorized_keys

fig4.3_5.png
修改
.ssh/權(quán)限為700
chmod 700 .ssh

fig4.3_6.png
在這里一定要修改以上二者的權(quán)限(解決方法,參考記一次ssh免密登錄踩坑and Debug之路),不然即使進(jìn)行下一步后,在cmd命令行通過
ssh username@ip_adress -p port免密登錄仍然失敗,提示輸入密碼(debug提示參考SSH遠(yuǎn)程登錄主機(jī)失敗,求路過的高手指點(diǎn)迷津)
# 上面還有很多debug提示
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Trying private key: /root/.ssh/id_ed25519
debug1: Next authentication method: password
在服務(wù)器端查看sshd日志,會出現(xiàn)類似下面的語句:
Authentication refused: bad ownership or modes for directory /root
原因是:~/.ssh文件需要只供用戶自己讀、寫、執(zhí)行(權(quán)限為700),而其他用戶不可以有任何權(quán)限
- ⑥ 重啟服務(wù)器端SSH
方法1:由于是==非root==用戶,使用sudo
sudo service sshd restart
方法2:sudo仍然沒有權(quán)限的可以請root用戶幫忙~
方法3:或者exit退出此次登錄。隨后再重新登錄服務(wù)器即可。
5、連接
-
① 新建連接
fig5_1.png - ② 選擇
Linux
fig5_2.png
在這里如果連接失敗,可以重新啟動VS Code - ③ 新建linux命令行終端
fig5_3.png
之后便可以達(dá)到本文開頭展示的效果啦~~
tips:3①、5②也可以通過設(shè)置settings.json文件達(dá)到同樣的效果
"remote.SSH.showLoginTerminal": true, "remote.SSH.remotePlatform": { "pangu": "linux" }
tips.png
References:
















