剛好碰到部分框架不能在windows上運(yùn)行怎么辦,簡單粘姜。搞了個(gè)linux虛擬機(jī)繼續(xù)盤它;但是又有一個(gè)問題偿警,在linux里面修改代碼好麻煩,想用windows上的ide來調(diào)試linux里面的項(xiàng)目代碼怎么辦唯笙?
有這么幾個(gè)思路
- 在linux項(xiàng)目目錄初始化一個(gè)git倉庫螟蒸,把代碼提交到遠(yuǎn)程倉庫,然后在windows的機(jī)器上拉取代碼崩掘,用git來進(jìn)行兩個(gè)機(jī)器上的代碼同步七嫌;
- 用vscode中的remote workspace插件,通過sftp來獲取linux機(jī)器中的項(xiàng)目苞慢;
第一種思路很簡單诵原,就是在使用過程步驟比較繁瑣,想看到每次的修改都必須一端提交代碼挽放,另一端拉取代碼绍赛。
下面我們著重說第二種思路:
這里就不介紹sftp是什么東西了,不懂的請(qǐng)自行百度辑畦。
這里默認(rèn)linux已經(jīng)安裝了openssh(不確定有沒有安裝的點(diǎn)這里)和windows上已經(jīng)開啟了ssh
linux設(shè)置
建立用戶組和用戶
我們建立一個(gè)管理sftp的用戶組吗蚌,方便我們管理權(quán)限。
- 建立一個(gè)sftp-users的sftp用戶組
sudo groupadd sftp-users
- 在sftp-users組下建立admin用戶
sudo useradd -g sftp-users -m admin
- 修改admin的密碼纯出,連續(xù)兩次輸入密碼就行
passwd admin
3.1. 如果admin用戶已經(jīng)存在蚯妇,但不在sftp-users組里,可以將第2步的admin換成其他任意的用戶名暂筝,或者箩言,可以移動(dòng)admin到sftp-users
usermod –g sftp_users admin
配置ssh和權(quán)限
- 打開/etc/ssh/sshd_config文件,修改配置文件之前最好備份一份源文件焕襟,出了問題也能還原回來陨收。
- 修改Subsystem sftp為internal-sftp,使用系統(tǒng)自帶的internal-sftp搭建sftp服務(wù)器鸵赖。
#注釋掉這行
#Subsystem sftp /usr/libexec/openssh/sftp-server
#添加在配置文件末尾
Subsystem sftp internal-sftp #指定使用sftp服務(wù)使用系統(tǒng)自帶的internal-sftp
Match Group sftp-users
ChrootDirectory %h #用chroot將指定用戶的根目錄务漩,chroot的含義:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/
ForceCommand internal-sftp
X11Forwarding no #這兩行拄衰,如果不希望該用戶能使用端口轉(zhuǎn)發(fā)的話就加上,否則刪掉
AllowTcpForwarding no
- Match Group sftp-users這一行是指定以下的子行配置是匹配sftp-users用戶組的菲饼,多個(gè)用戶組用英文逗號(hào)分隔肾砂;
- ChrootDirectory %h該行指定Match Group行指定的用戶組驗(yàn)證后用于chroot環(huán)境的路徑列赎,也就是默認(rèn)的用戶目錄宏悦,比如/home/admin;也可以寫明確路徑包吝,例如/data/www饼煞;
- ForceCommand internal-sftp該行強(qiáng)制執(zhí)行內(nèi)部sftp,并忽略任何~/.ssh/rc文件中的命令诗越;
注意:因?yàn)镃hrootDirectory %h模式砖瞧,所以我們等下要設(shè)置sftp-users中的所有用戶的用戶目錄權(quán)限為root擁有,否則sftp-users組中的用戶無法用sftp登錄嚷狞。
修改sftp-users用戶組用戶目錄權(quán)限
- 修改權(quán)限為root用戶擁有
chown root /home/admin
- 修改權(quán)限為root可讀寫執(zhí)行块促,其它用戶可讀
chmod 755 /home/admin
- 重啟ssh,登錄sftp
sudo service ssh restart
# 或者 centos重啟重啟ssh的命令
sudo systemctl restart sshd.service
- 在用戶目錄下建立子目錄床未,讓sftp-users中的用戶可讀寫文件竭翠,我們現(xiàn)在在/home/admin目錄下新建一個(gè)projects文件夾,并授權(quán)給admin
cd /home/admin/
mkdir projects
# 更改文件夾用戶
chown admin /home/admin/projects
# 讓文件夾可讀寫
chmod 755 /home/admin/projects
linux的配置到這里基本就大功告成了薇搁,步驟還是挺多的斋扰。接下來就輪到windows上的配置了。
windows配置
在進(jìn)行vscode的配置之前啃洋,我們先進(jìn)行一下windows的一些簡單配置传货。
-
確保windows上開啟了ssh,檢驗(yàn)方式如下宏娄,在命令行輸入ssh:
如圖所示就代表安裝好了问裕。
- 使用ssh-keygen生成ssh的公密鑰,用于windows登錄linux用孵坚。在Windows下查看[c盤->用戶->自己的用戶名->.ssh]下是否有"id_rsa僻澎、id_rsa.pub"文件,如果沒有需要手動(dòng)生成,有的話直接忽略這一步十饥。
打開命令行窗口窟勃,在控制臺(tái)中輸入以下命令:
$ ssh-keygen -t rsa -C "youremail@example.com"
密鑰類型可以用 -t 選項(xiàng)指定。如果沒有指定則默認(rèn)生成用于SSH-2的RSA密鑰逗堵。這里使用的是rsa秉氧。
同時(shí)在密鑰中有一個(gè)注釋字段,用-C來指定所指定的注釋蜒秤,可以方便用戶標(biāo)識(shí)這個(gè)密鑰汁咏,指出密鑰的用途或其他有用的信息亚斋。所以在這里輸入自己的郵箱或者其他都行。
這里簡單起見攘滩,輸入上面命令之后一直回車就行了忍抽,結(jié)果見下圖。
vscode配置
- 在vscode擴(kuò)展商店中搜索remote叉寂,安裝Remote Workspace
- 創(chuàng)建一個(gè)*.code-workspace工作區(qū)文件震糖,例如:test.code-workspace
{
"folders": [{
"uri": "sftp://admin@[ip地址]:22/?key=id_rsa",
"name": "remote_www"
}]
}
uri的格式如下:
sftp://[user:password@]host[:port][/path/to/a/folder][?param1=value1¶m2=value2]
- key代表了ssh的私鑰文件的名稱,查找目錄是在當(dāng)前用戶目錄下的.ssh文件夾蚤假。
其他參數(shù)可以查看remote workspace的使用文檔栏饮。
-
在vscode中,選擇打開工作區(qū)磷仰,然后打開剛剛保存的test.code-workspace文件袍嬉。
- 然后,你會(huì)發(fā)現(xiàn)還是不行灶平,相當(dāng)絕望伺通。還差最后一步,我們要把剛剛生成的公鑰文件-id_rsa.pub的內(nèi)容復(fù)制的/home/admin/.ssh/authorized_keys文件中用于ssh的登錄逢享。結(jié)果類似下圖:
這時(shí)候重新刷新vscode工作區(qū)罐监,如果/home/admin/目錄下有文件的話,就可以在vscode中看到了拼苍。
注意:某些linux用戶目錄下并沒有.ssh文件夾和authorized_keys文件笑诅,問題不大,新建文件和文件夾就行了疮鲫。
可能出現(xiàn)的問題:
- 如果在vscode中文件無法保存吆你,提示權(quán)限不足,那就是admin賬戶對(duì)文件沒有操作權(quán)限俊犯,更改相應(yīng)目錄和文件的讀寫權(quán)限就ok了妇多。