1、安装openssh
windows客户端、linux服务器端都需要安装openssh,一般情况linux服务器默认安装,windows除去新版的 win10,其他都需要单独安装
2、安装vscode插件
需要安装 C/C++、CMake Tools、Remote - SSH、Remote Developmentms(能打开服务器下某一文件夹)
3、vscode远程连接服务器配置
操作如下:
打开后界面如下:
在此可以编辑远程连接配置
3.1、password方式认证
直接在config文件加:
Host 信息港-172.21.138.159 #名字
HostName 172.21.138.159 #服务器IP
User root #登陆用户
Port 22 #登陆端口
PreferredAuthentications password #认证方式默认为password,验证方式包括 password publickey
PreferredAuthentications 默认是 password,当认证方式为password时,用户每次远程连接服务器时都需要在命令行处手动输入密码,如果使用 私钥文件 认证方式会简单些
例子:
Host 192.168.157.130
HostName 192.168.157.130
User root
Port 22
PreferredAuthentications password
3.2、使用密钥认证方式
3.2.1、生成密钥
使用ssh命令,在windows运行:
ssh-keygen -t rsa -b 4096 -f .ssh/id_rsa-remote-ssh #会在 C:\Users\ArgenT\.ssh 目录下生成 id_rsa-remote-ssh 、id_rsa-remote-ssh.pub两个文件
id_rsa-remote-ssh文件存放的是私有密钥,id_rsa-remote-ssh.pub存放的是公有密钥(感觉此处跟git ssh认证方式很类似)
密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。按照当前实际搭建情况如下图所示:
(此处的参考文章:https://blog.csdn.net/u010417914/article/details/96918562)
3.2.2、将公钥放到服务器
所以接下来要做的就是将 公钥 放到服务器上(/登陆用户名/.ssh/authorized_keys文件,如果没有则创建authorized_keys文件):
#放入密钥
cd ~/.ssh
cat id_rsa-remote-ssh.pub >> authorized_keys
#修改权限,确保能够有权限
sudo chmod 600 authorized_keys
sudo chmod 700 ~/.ssh
同时确保服务器的SSH配置正确(默认下无需更改):
sudo vim /etc/ssh/sshd_config
确认下面两项:
RSAAuthentication yes
PubkeyAuthentication yes
#如果想将通过密码登陆SSH方式禁用掉,可以让配置文件(谨慎使用):
PasswordAuthentication no
3.2.3、vscode配置
在config文件加上:
Host 设备名称(不影响连接)
HostName Linux的地址(域名或ip)
Port 端口
PreferredAuthentications publickey #验证方式包括 password publickey
User 用户名
IdentityFile C:\Users\ArgenT\.ssh\id_rsa-remote-ssh #私钥文件全路径(指的是私钥文件所在windows的路径),如果上面选择了publickey,需要用这个指出私钥文件的全路径
PreferredAuthentications 默认是 password
例子:
Host 172.20.140.100
HostName 172.20.192.234
User root
Port 18889
PreferredAuthentications publickey
IdentityFile C:\Users\ArgenT\.ssh\id_rsa-remote-ssh
4、调试脚本
vscode调试C++代码,必须要两个文件:tasks.json(规定了编译命令、编译参数)、launch.json(规定调试时的启动命令、运行参数),并且两个文件必须放在 .vscode 目录下, .vscode 目录放在代码工作目录的根目录下,有的 .vscode 下还有 setting.json ,这个不是必须的,起作用是该项目的 setting(项目的全局设置)
有两种方法导入tasks.json、launch.json 这两个脚本,一种是用别人的模板,另一种是用 vscode 系统给的模板,下面着重说第二种
4.1、task.json
按 ctrl+shift+P 输入 configure tasks,选择Create tasks.json file from templates,之后会看到一系列task模板,选择 cpp build file 或 g++ build file(区别只在于默认生成的启动命令不通),就生成了:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: cpp build active file",
"command": "/usr/bin/cpp", #编译命令需要改
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build", #不能改,将其加入了编译中
"detail": "compiler: /usr/bin/cpp"
}
]
}
添加完 tasks.json 后就可以编译代码了,使用: CTRL + SHIFT + B 即可完成编译(但不运行),或者 CTRL + SHIFT + P 输入 build task
4.2、launch.json
在左侧找到 运行,点开后没有 launch.json 时会提示创建 launch.json :
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.out", #启动命令
"args": [], #启动参数
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
在左侧找到 运行 会有调试,或者 F5 编译并调试