VSCode的连Linux远程开发碰到的坑解决
安裝Remote-SSH并配置
首先打開你的VSCode,找到Extensions,搜索Remote,下載Remote-Developoment插件,會自動安裝其他的Remote插件,其中會包含Remote-SSH:
進入設置,搜索ssh,找到并選中拓展中的Remote-SSH中的ShowLoginTerminal選項,因為在連接的時候,終端會讓你輸入yes或者密碼等
接著,需要配置你的Linux服務器地址信息,按CTRL+SHIFT+P,搜索ssh,找到Open Configuration File選項
點那個配置圖標,選擇一個ssh_config
在ssh_config里輸入目標機器信息:
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host alias
? ? HostName 120.xx.xx.xxx
? ? User root
Host ubuntu_srs
? ? HostName 192.xxx.xx.xx
? ? User yu
? ? IdentityFile ?C:\Users\xxxx\.ssh\id_rsa
Linux安裝OpenSSH-Server和配置
Ubuntu
// 先卸載
sudo apt-get remove openssh-server
// 安裝
sudo apt-get install openssh-server
?
//重啟sshd服務
sudo service ssh --full-restart
//自動啟動
sudo systemctl enable ssh
CentOS
//安裝
yum install -y openssl openssh-server
?
//重啟sshd服務
systemctl restart sshd.service
?
//自動啟動
systemctl enable sshd
編輯配置文件
備份配置文件
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
編輯配置文件
sudo vim /etc/ssh/sshd_config
配置文件中添加如下配置:
端口可以自定義
使用密碼登錄
保存后,重啟sshd服務器,重啟命令上面已給出。
使用密碼連接SSH
找到你配置的Linux服務器:
輸入密碼,再回車:
然后打開文件夾即可開始編寫代碼:
使用CTRL + SHIFT + ~可以調出終端,就可以在終端操作命令,打開文件就可以寫代碼了。
使用密鑰免密碼登錄
客戶端配置
確保本地Windows操作系統已經安裝了ssh
生成SSH秘鑰對 :
ssh-keygen -t rsa -b 4096?
(-b 4096表示生成的rsa秘鑰對的長度是4096個bit) 在輸入該指令后,會讓我們指定秘鑰文件的生成目錄,可以直接回車跳過,生成的目錄在c:\user\WINDSUN\.ssh這個目錄下生成:id-rsa和id-rsa.pub兩個文件, 第一個是私鑰文件,第二個是公鑰文件,用戶名稱是你自己的電腦用戶名
服務器端配置
檢測ssh服務是否啟動
netstat -ntlp | grep ssh
修改配置文件
vim /etc/ssh/sshd_config
這里最重要的是我們要把PubkeyAuthentication配置為yes允許使用基于密鑰認證的方式登錄。
最后,將客戶端的公鑰id-rsa.pub文件上傳到對應用戶根目錄的.ssh文件夾下,進入.ssh中將公鑰的內容拷貝到authorized_keys文件中
cp id_rsa.pub authorized_keys
然后設置相應文件的權限
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
VS的Remote-SSH插件配置
設置vscode的Remote - SSH插件配置文件:
Host Aliyun
? ? HostName X.X.X.X
? ? User XXX
? ? IdentityFile ?C:\Users\WINDSUN\.ssh\id_rsa
遇到的問題
cound not establish connection to "ubuntu". Connecting was canceled
可以用命令行: ?ssh root@192.12.x.x ? 密碼登錄試試,我這邊發現是公鑰少了個字符
如果報管道錯誤,可能是以下問題
你的Linux服務器的ssh配置有問題,通過修改配置測試是否解決問題。
刪除在服務器上創建的“ .vscode-server”目錄。這是在主目錄中創建的隱藏目錄(您可以使用“ ls -la”顯示我相信的所有文件)。可能是一些不正確的數據被緩存在那里,因此刪除目錄將使您的情況更加整潔。刪除后,可以嘗試通過vscode上的remote-ssh重新連接。
如果還是不行,可以嘗試重新使用ftp將本地公鑰上傳到Linux上,然后將其復制到authorized_keys文件中,設置權限,重啟SSH服務器,重新連接
注意事項
在使用公鑰第一次連接到Linux時候,可能會讓你輸入密碼,連接完成后,會在你的用戶.ssh目錄中中生成一個文件known_hosts,這個目錄中還有公鑰和私鑰id-rsa.pub和id-rsa,然后將公鑰上傳到服務器上,重新重復上面的復制到.ssh/authorized_keys,并且重新設置權限,再重新嘗試連接到Linux,就不需要再輸入密碼了
開始調試
File -> Open Folder
選擇服務器上的目錄:
開始調試之前,在遠程機器安裝C++插件:
點調試圖標,讓你創建launch.json
選擇C++(GDB/LLDB)
這里我遇到了個錯誤:
Unable to create 'launch.json' file inside the '.vscode' folder (Unable to write file 'vscode-remote://ssh-remote+ubuntu_srs/opt/srs.oschina/trunk/.vscode/launch.json' (NoPermissions (FileSystemError): Error: EACCES: permission denied, mkdir '/opt/srs.oschina/trunk/.vscode')).
原因是我的目錄在opt底下,用的用戶又不是root,所以沒有權限,解決方式是把代碼放到自己用戶目錄下,或者用root用戶
解決后再點,生產一個launch模板文件,修改一下:
{
? ? // Use IntelliSense to learn about possible attributes.
? ? // Hover to view descriptions of existing attributes.
? ? // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
? ? "version": "0.2.0",
? ? "configurations": [
? ? ? ? {
? ? ? ? ? ? "name": "(gdb) Launch",
? ? ? ? ? ? "type": "cppdbg",
? ? ? ? ? ? "request": "launch",
? ? ? ? ? ? "program": "/opt/srs/srs4/trunk/objs/srs",
? ? ? ? ? ? "args": ["-c","/opt/srs/srs4/trunk/conf/srs.conf"],
? ? ? ? ? ? "stopAtEntry": false,
? ? ? ? ? ? "cwd": "${workspaceFolder}",
? ? ? ? ? ? "environment": [],
? ? ? ? ? ? "externalConsole": false,
? ? ? ? ? ? "MIMode": "gdb",
? ? ? ? ? ? "setupCommands": [
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "description": "Enable pretty-printing for gdb",
? ? ? ? ? ? ? ? ? ? "text": "-enable-pretty-printing",
? ? ? ? ? ? ? ? ? ? "ignoreFailures": true
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ]
? ? ? ? }
? ? ]
}
另幾篇文章:
Permission denied (publickey):
https://www.jianshu.com/p/14027e35b900
ssh: permission denied (publickey):
https://blog.csdn.net/xbw12138/article/details/72773993
SSH權限被拒絕(publickey):
https://ubuntuqa.com/article/1193.html
Ubuntu通過XShell連接,解決Permission denied (publickey)報錯:
https://blog.csdn.net/Liucheng417/article/details/80092087
NO.37——處理ubuntu的的SSH連接上的Permission denied(publickey):
https://blog.csdn.net/ghl1390490928/article/details/86600312
ubuntu下Could not load host key: /etc/ssh/ssh_host_rsa_key:
https://blog.csdn.net/qq_41917456/article/details/104671359
總結
以上是生活随笔為你收集整理的VSCode的连Linux远程开发碰到的坑解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Windows上使用VSCode远程链
- 下一篇: Windows下安装部署DBeaver连