本地主機系統:Windows
遠程主機系統:Ubuntu
開發工具:vscode+Xshell
介紹:
全文總共分三篇。1、第一篇,局域網內部一台主機,主機上安裝了vscode和虛擬機,虛擬機安裝了Ubuntu,第一篇介紹了這種情況下vscode如何通過Ubuntu的用戶密碼來遠程連接Ubuntu系統,進行程序開發。2、第二篇,與第一篇條件相同,在第一篇的基礎上解決新的問題:每次vscode遠程Ubuntu和切換Ubuntu當前文件路徑時,都需要輸入Ubuntu的用戶密碼。本篇介紹如何通過SSH密鑰進行免密登陸及切換工作路徑。3、第三篇,前面介紹的都是在同一個局域網內一台主機上的vscode遠程另一台主機上的Ubuntu的搭建方法,在設置配置文件的時候只需要配置成內網ip就行了,然而這個ip地址是局域網內的,不屬於公網的,所以該主機對外是隱藏的。當遇到在家辦公時,需要外網主機上的vscode遠程到公司局域網內主機時,由於局域網主機不對外暴露,無法再用局域網的主機ip配置,此時需要先通過內網穿透等方法來解決這個問題。第三篇介紹了一台外網主機如何連接一個局域網內的主機進行遠程開發。
第一篇:遠程開發環境搭建
准備工作
vscode官網:https://code.visualstudio.com/
Xshell和Xftp官網:https://www.netsarang.com/zh/free-for-home-school/
注:進入官網網址后,直接填入姓名和郵箱,選擇Xshell或者Xftp或者兩者,然后點擊下載,那么這兩款軟件的下載地址就會自動發送到你的郵箱中。這兩款軟件對於學校學生和個人的使用是免費的。
第一步
安裝vscode到Windows上
第二步
安裝git或直接安裝SSH到Windows上
第三步
安裝Ubuntu操作系統
順便為這個Ubuntu系統設置一個普通用戶:
用戶名為:username
用戶密碼為:password
后面第五步將通過windows上的vscode遠程登錄到這個用戶名上。
安裝ssh服務器到Ubuntu上
sudo apt install openssh-server
第四步
打開vscode,打開拓展,搜索Remote Development
,並安裝該拓展。
第五步
安裝好Remote Development
后,vscode左側會出現一個小電腦圖標,它就是遠程資源管理器,點開后,選擇SSH Targets
(一般默認,不用選),然后點擊左側SSH Targets界面的小齒輪圖標configure
圖標。
點擊小齒輪后,vscode的頂部會出現一些選項,選擇C:\Users\username\.ssh\config
,就會跳出如下的配置信息:
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host alias
HostName hostname
User user
進行以下配置:
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host 隨便起的名字 #Host參數右邊的名字是這個遠程連接的名字,隨便起。
HostName 192.168.10.193 #HostName參數右邊的主機名是你需要連接的遠程主機的ip地址。
User username #User參數右邊的用戶名是你遠程主機上的一個用戶的用戶名,你將使用這個用戶進行登錄,同樣,進行遠程時的連接密碼也是遠程主機上該用戶名所對應的登錄密碼。
然后左側SSH TARGETS窗口將會出現一個新的連接,右鍵點擊連接,然后選擇系統為Linux,然后在終端輸入Ubuntu主機上username用戶的用戶密碼,登錄成功。
第六步
在Windows上安裝Xshell,安裝好直接打開,點擊新建
,然后就會跳出新建會話屬性
。
在常規一欄修改參數:
名稱:自己隨便起一個新建會話名稱
協議:登錄協議選擇SSH
主機:主機填寫遠程主機的IP地址
端口號:一般SSH遠程的端口號默認為22
點擊確定,然后主界面左側的會話管理器的所有會話上就會出現一個名為你剛剛自己隨便起的會話名稱的新連接,雙擊它,然后就會跳出讓你填寫登錄用戶名的框子,你可以填寫你要遠程登錄的遠程主機上的一個用戶名,然后確定,然后填入密碼,然后就會與遠程主機連接,並出現遠程主機的終端界面。
第七步
安裝Xftp,可以用來方便地傳輸Windows和遠程Ubuntu之間的文件。
第二篇:通過SSH密鑰進行免密登陸遠程開發
然而,如果在vscode上僅僅是通過用戶密碼登錄遠程Ubuntu,那么每次切換文件夾的時候都會需要輸入一次用戶密碼,這很麻煩,可以通過SSH密鑰的方式免密連接。
解決方式如下:
第一步:通過管理員權限打開windows的cmd,輸入命令:
ssh-keygen -t rsa
這句命令將生成windows當前用戶的一個公鑰和一個私鑰,它默認生成在C盤下的C:\Users\你的當前用戶的用戶名\.ssh
文件夾下,私鑰名為:id_rsa
;公鑰名為id_rsa.pub
第二步:將windows下的公鑰發給遠程主機Ubuntu
公鑰需要發送到遠程主機上,可以使用命令ssh-copy-id發送,但是windows的cmd無法使用。還有另一種方法,那就是通過Xshell在遠程系統里生成公鑰和私鑰:
ssh-keygen -t rsa
它會詢問你需要將該公鑰和私鑰保存到哪里,直接enter鍵保存在默認路徑:/home/username/.ssh
文件夾下就行了,如下:
username@ubuntu193:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa
Your public key has been saved in /home/username/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:UaWv+KDZVmfdrElQSubBpT+OGPYhLDBsG1KPLL70Fuc username@ubuntu193
The key's randomart image is:
+---[RSA 3072]----+
| . .o... |
| + o . .=.. |
| o O o .+.+ |
| . + = o .+. |
| o o S = oooo |
| . o + +.*o+o.o|
| . o E.ooo..o |
| . +.o o |
| o.. . |
+----[SHA256]-----+
username@ubuntu193:~$
第二步,將windows本地生成的ssh公鑰上傳到Ubuntu服務器上,有兩個方法,此處使用方法二實驗成功;方法一未成功,存在未知問題
方法一
然后將Xshell終端的目錄切換到:/home/username/.ssh
下,並用vim新建一個名為authorized_keys
的文件,如下:
username@ubuntu193:~$ cd /home/username/.ssh
username@ubuntu193:~/.ssh$ ls
authorized_keys id_rsa id_rsa.pub known_hosts
從上面可見,有時候authorized_keys
已經存在了,那么可以通過vim直接打開它,然后在windows上通過文本方式打開公鑰id_rsa.pub
,並將公鑰的內容Ctrl+a全選Ctrl+c復制,然后粘貼到Xshell打開的終端的authorized_keys
里。
方法二
打開Git Bash
工具,切換目錄到windows的公鑰和私鑰生成的位置,此處為:C:\Users\username\.ssh
。
如果還未生成ssh密鑰,則輸入:
ssh-keygen
生成ssh密鑰后,輸入命令上傳公鑰到Ubuntu服務器:
ssh-copy-id -i id_rsa.pub username@192.168.10.193
然后輸入Ubuntu上username用戶名的密碼,上傳成功。
上傳后還可以進行ssh遠程登陸驗證,命令如下:
ssh username@192.168.10.193
第三步,配置windows端vscode上關於ssh密鑰登陸的配置文件
然后Ctrl+Shift+p
打開Remote-SSH:Open SSH Configuration File...
,然后點開C:\Users\username\.ssh\config
內容如下所示:
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host 隨便起的名字 #Host參數右邊的名字是這個遠程連接的名字,隨便起。
HostName 192.168.10.193 #HostName參數右邊的主機名是你需要連接的遠程主機的ip地址。
User username #User參數右邊的用戶名是你遠程主機上的一個用戶的用戶名,你將使用這個用戶進行登錄,同樣,進行遠程時的連接密碼也是遠程主機上該用戶名所對應的登錄密碼。
想要進行ssh密鑰登錄,需要增加私鑰地址內容,修改如下:
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host 隨便起的名字 #Host參數右邊的名字是這個遠程連接的名字,隨便起。
HostName 192.168.10.193 #HostName參數右邊的主機名是你需要連接的遠程主機的ip地址。
User username #User參數右邊的用戶名是你遠程主機上的一個用戶的用戶名,你將使用這個用戶進行登錄,同樣,進行遠程時的連接密碼也是遠程主機上該用戶名所對應的登錄密碼。
IdentityFile "C:\Users\username\.ssh\id_rsa"
其中,id_rsa為私鑰,id_rsa.pub為公鑰
保存后,現在可以在vscode中可以免密來回切換文件夾了。
第三篇:外網主機vscode遠程到內網Ubuntu系統的開發環境搭建
此處直接先參考:https://www.cnblogs.com/conefirst/articles/15392967.html
將內網穿透的環境搭建好后,打開外網主機上的Git Bash工具,然后切換當前目錄到生成SSH密鑰的文件夾下,然后上傳本地的公鑰到遠程內網Ubuntu服務器上,這里由於是外網主機訪問內網主機,所以和第二篇中有些不一樣:
ssh-copy-id -i id_rsa.pub -p 9887 username@125.64.92.159
其中,125.64.92.159是內網穿透工具提供的公網地址,9887是內網穿透工具提供的端口號,對這個公網地址+端口號進行訪問時,便會直接定位到內網已經綁定好的主機上。所以當外網主機需要vscode遠程連接內網主機進行開發時,必須同時指定該主機對應的被內網穿透后獲取到的公網地址+端口號。
上傳公鑰后,進行遠程測試:
ssh -p 9887 username@125.64.92.159
測試成功后,打開vscode,Ctrl+Shift+p,打開ssh的配置文件,添加以下內容:
Host 192.168.10.183
HostName 125.64.92.159
User username
Port 9887
IdentityFile "C:\Users\username\.ssh\id_rsa"
注意:打開vscode之前,最好將C:\Users\username\.ssh
目錄下除了ssh公鑰和私鑰以外的其它和vscode有關的配置文件全部刪了,否則可能還會導致遠程連接的失敗。
結束
至此,你可以通過本地的Xshell在Ubuntu進行文件操作,並通過vscode在Ubuntu系統上進行開發工作了。