之前使用過PyCharm的遠程開發,很好用,不過還是有幾個局限性:
- 只能用於Python語言;
- 本地和服務器都需要有一份代碼,這兩份代碼是完全同步的;
一。配置免密遠程登錄
1、首先檢查本地是否有已生成ssh密鑰對,Linux用戶查看是否存在公鑰文件 ~/.ssh/id_rsa.pub
和私鑰文件~/.ssh/id_rsa
。
如果沒有,則用如下命令生成,一路回車即可:
ssh-keygen -t rsa -b 4096
2、然后將本地公鑰文件id_rsa.pub
的內容添加到遠程主機用戶目錄下 .ssh
文件夾內名為 authorized_keys
的文件中。
不用去復制粘貼,使用命令ssh-copy-id
來完成,輸出結果如下:
~$ ssh-copy-id remote_user@remote_id /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys remote_user@remote_id's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'remote_user@remote_id'" and check to make sure that only the key(s) you wanted were added.
操作完后登錄服務器就可以不用輸入密碼了,你們可以取試試。
二。配置VScode遠程開發插件
在VS code中,使用ctrl+shift+x
快捷鍵打開插件搜索窗口,輸入插件Remote Development
,並點擊安裝。
使用cmd+shift+p
快捷鍵打開命令輸入窗口,輸入Remote-SSH:Connect to Host...
,第一次使用時需要選擇Add New SSH Host
配置一下,myserver
是我自己配置的,選擇這個就可以直接登錄服務器了。
然后就照着如下格式輸入登錄服務器的命令:
上一步是把登錄服務器的信息添加到配置文件.ssh/config
中的,該文件格式為
Host alias HostName host_id User user_name Port 22 ForwardAgent yes
- HostName:遠程主機的IP地址
- User:遠程主機的用戶名
- port:遠程主機的端口號,不填寫的話,ssh默認端口號為22,如果要用其他端口號,可以在這里更改
- ForwardAgent:這個是VS code自己添加的,可以不用管
上面配置文件第一行Host alias
,我們可以將alias
更改為任何別名,因為我們平時登錄服務器使用的命令為ssh name@server_id
,如果記不住服務器IP地址,則可以設置別名來方便記憶。
比如我第一行為Host myserver
,則登錄服務器時使用命令ssh myserver
即可。
最后再接着使用cmd+shift+p
快捷鍵打開命令輸入窗口,輸入Remote-SSH:Connect to Host...
,選擇你配置的那個別名即可連接到服務器。
也可以通過如下方式連接服務器:
會新彈出VS code窗口,左下邊多了一個遠程圖標,表示處於遠程模式。
連接成功后,通過File->Open->File/Folder
打開文件或者文件夾,然后就可以像編輯本地文件一樣編輯遠程文件了。
最后啰嗦一句,當使用 ssh name@server_id
遠程登錄服務器時,出現錯誤提示:Permission denied (publickey).
這是因為服務器默認禁用了ssh密碼登錄權限。修改方法如下:
- 在服務器上的終端輸入:
sudo vim /etc/ssh/sshd_config
,打開該文件。 - 找到
PasswordAuthentication
,將其后的no
改為yes
。 - 重啟ssh服務:
sudo service sshd restart