安装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远程开发碰到的坑解决相关推荐

  1. 音视频开发6. 搭建 ffmpeg Linux远程开发环境

    音视频开发6. 搭建 ffmpeg Linux远程开发环境 一.准备环境 二.操作步骤 1. 在CentOS 编译安装 ffmpeg 2. 编译安装ffmpeg后的环境 3. 本地在vscode安装 ...

  2. 通过vscode进行嵌入式linux arm开发板gdb调试

    下载和安装vscode, 下载 vscode for windows 地址:  Visual Studio Code - Code Editing. Redefined 安装 "remote ...

  3. Eclipse 进行Linux远程开发

    Eclipse 进行Linux远程开发   Eclipse可以进行Linux远程开发,提前是安装了远程的包,如果没有需要返回到上篇文章重新安装包,同时如果进行C/C++开发,包也需要. 首先打开Sho ...

  4. VSCode配置Remote-SSH连接Linux远程开发

    VSCode 作为最强的的一款编辑器,其强大之处在于其友好的操作界面和丰富的插件,除了为各种编程语言增加了插件外,对于 SSH 远程连接和 WSL 等都也有对应的插件,极大的方便了使用 VSCode, ...

  5. vscode私钥设置_VSCode远程开发配置指南

    凭借Windows10的大量组件和Visual Studio Code的强大插件,在Windows下远程开发Linux相关程序如今已经成为高效的选择.比起Vim,我更加喜欢VS Code,最主要的原因 ...

  6. linux远程开发——使用vs2019远程连接linux

    目录 步骤 一.新建项目 二.远程连接 三.主函数测试 四.vs2019中linux控制台打印中文乱码问题 步骤 一.新建项目 1.打开vs2019,选择创建新项目. 2.选择c++.Linux,创建 ...

  7. oir 用image j打开的插件_Windows 上使用 VSCode Remote 插件进行远程开发

    直到 VSCode remote-ssh 插件出来和我买了一台 NUC 机器之前,我一直在维护两套开发环境,一套防在公司的 CentOS 虚拟机上,另一套则是家里的 Windows 机器.因为代码同步 ...

  8. 【Remote Development】VSCode 基于 SSH 进行远程开发

    系统需求 我们在 VSCode 下载由微软官方推出的 Remote SSH 插件 查看一下里面的描述,对于远程机器的要求如下: Local: A supported OpenSSH compatibl ...

  9. Visual Studio进行linux远程开发

    目录 准备工作 创建一个项目 配置远程项目 准备工作 查看linux IP地址 安装了工具 sudo apt-get install openssh-server g++ gdb make ninja ...

最新文章

  1. UVA699 下落的树叶 The Falling Leaves(二叉树的递归遍历建树)
  2. Dynamo分布式系统——「RWN」协议解决多备份数据如何读写来保证数据一致性,而「向量时钟」来保证当读取到多个备份数据的时候,如何判断哪些数据是最新的这种情况...
  3. the data structure i like
  4. 极简版 卸载 home 扩充 根分区--centos7 xfs 文件格式
  5. ChatForFun 公众号使用说明
  6. 中国长租公寓市场白皮书
  7. node vue 合并项目_吐血整理最佳实践:SpringBoot整合Vue前后端分离开发
  8. latex符号正下方下标
  9. STM32F1下载程序方法
  10. Unity ProjectTiny用纯ECS写个跃动的小球
  11. 文件操作fwrite写txt文件乱码怎么办,我这里有方法解决
  12. 【Java基础】二、大厂都开始重视的基础很重要吗?快来加入基础的学习,巩固一下细枝末角,刷刷面试题吧
  13. 如何设计百万人抽奖系统
  14. 工作经验和工作经历区别很大
  15. PRD-产品需求说明文档
  16. 淘宝开放平台API族
  17. 测试 | 让每一粒尘埃有的放矢
  18. Android源码定制(1)——Android6.0源码编译
  19. Bugku-web-sourse
  20. 以前的记录(加密与解密)

热门文章

  1. Hadoop_计算框架MapReduce
  2. 重新实践《轻量级DJANGO》这本书
  3. UI   控件 —UITextFile
  4. 10.30 NFLS-NOIP模拟赛 解题报告
  5. SQL查询语句精华文章(转)
  6. FMS3 服务器集群虚拟服务器配置入门
  7. iOS之实现图片的压缩、解压缩、模糊、置灰、马赛克、黑白化、调色等处理
  8. 采用8种相位,每种相位各有两种幅度的QAM调制方法,在1200Baud的信号传输速率下能达到的网数据传输速率为( )
  9. TensorFlow模型持久化
  10. 2018/Province_Java_C/1/哪天返回