PART1:关于ssh的一点杂记
连接的命令:ssh username@ipv4
generate keys
> ssh-keygen
key locations:
- private key:
~/.ssh/id_rsa
- public key:
~/.ssh/id_rsa.pub
public key goes into server “authorized_keys” file:需要将client(此时为windows10)中的公钥写入server中的文件
~/.ssh/authorized_keys
ubuntu安装openssh-server (client已安装)
> sudo apt-get install openssh-server
查看已安装的openssh服务> sudo apt-cache policy openssh-client openssh-server
在浏览器中输入ipv4地址查看内容(安装apache)
> sudo apt install apach2 -y
(now, can create web application locally!
当cmd exit后,浏览器输入ipv4仍有效,正好展示了web服务器的效果)
PART2:正式的流程
- 在ubuntu上安装openssh-server(见上)
- 打开vmware ubuntu,注意在虚拟机设置中网络选择桥接模式,且保证22号端口已打开,ifconfig查看ipv4地址
- 本机windows打开cmd输入:
ssh username@ipv4 (ssh zhao@192.168.198.128)
此时cmd已产生变化,命令提示符显示当前已进入ubuntu中
退出使用> exit
此时每次都使用的是密码登录,很麻烦,使用公钥登录即可(用户将自己的公钥存储在远程主机上,私钥给公钥作为“信物”,不再需要密码登录)
使用> ssh-keygen
生成在~/.ssh中(用户文件夹下.ssh,已生成不用重新操作) - 配置公钥登录
- 将local的id_rsa.pub拷贝到虚拟机的~./ssh/authorized_keys文件(创建)中
- 在ubuntu上修改文件/目录权限
$ chmod 644 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
至此,在windows cmd中输入ssh username@ipv4
不再需要输入密码
开始在local vscode上配置远程操作
- 打开本地vscode,安装插件remote ssh(作者Microsoft),开始配置
点击小电脑标志:
SSH TARGETS “+”号创建;
小齿轮配置文件内容(选第一个config) - 配置文件格式:
Host:随便写,就是起个名。
HostName:IP地址
User: 远程主机登录的用户名
Port:默认22,可以不写。
IdentityFile:实体主机的私钥地址。(即windows10的私钥文件地址)
TIPS
- 可以在vscode可以直接打开虚拟机terminal,运行c/c++需要安装gcc
sudo apt-get install g++
- 编译文件:
g++ hello.c -o hello
- 运行文件:
./hello
即可开心hello world!
或者,若希望在vscode中ctrl+f5运行; f5调试;
(必须要在某文件夹下配置,会发现在当前路径文件夹下多了一个.vscode文件夹,以下几个json配置文件都被放在其中,而原本该文件夹下的其他文件都被放在了某newdir中):
- 配置 c_cpp_properties.json 的includePath
输入gcc -v -E -x c++ -
查看几个include,粘贴- 配置launch.json
直接打开run->add configurations->生成的文件保存即可- 配置tasks.json
直接打开terminal->configure default build task生成的文件保存即可
至此,正式完结!
copy local file to server:
注意win10的文件路径不能有中文> scp filename_Local username@ipv4:filename_Server
在vscode中配置ubuntu c/c++的几个文件
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ build active file",
"command": "/usr/bin/g++",
"args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
PART3:树莓派上的ssh实测
基本步骤与上所述一致,只是最开始在校园网内测试时总是失败,改用手机热点成功。经查询校园网一般禁止22端口。
在配置好连接之后,就可以开始远程登录树莓派了,且win10自带远程桌面,但需要确定xrdp服务已在树莓派上安装。
树莓派的远程桌面登录
- 树莓派安装xrdp服务 (一个微软远程桌面协议(RDP)的开源实现)
sudo apt-get install xrdp
- 启用windows自带的远程桌面
win+r
:再输入mstsc
(或者直接搜索远程桌面,打开即可)- 输入树莓派的ip,回车连接。再给用户名和密码,桌面就出来了!