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:正式的流程

  1. 在ubuntu上安装openssh-server(见上)
  2. 打开vmware ubuntu,注意在虚拟机设置中网络选择桥接模式,且保证22号端口已打开,ifconfig查看ipv4地址
  3. 本机windows打开cmd输入:ssh username@ipv4 (ssh zhao@192.168.198.128) 此时cmd已产生变化,命令提示符显示当前已进入ubuntu中
    退出使用> exit 此时每次都使用的是密码登录,很麻烦,使用公钥登录即可(用户将自己的公钥存储在远程主机上,私钥给公钥作为“信物”,不再需要密码登录)
    使用> ssh-keygen生成在~/.ssh中(用户文件夹下.ssh,已生成不用重新操作)
  4. 配置公钥登录
  • 将local的id_rsa.pub拷贝到虚拟机的~./ssh/authorized_keys文件(创建)中
  • 在ubuntu上修改文件/目录权限
    $ chmod 644 ~/.ssh/authorized_keys$ chmod 700 ~/.ssh

至此,在windows cmd中输入ssh username@ipv4不再需要输入密码

开始在local vscode上配置远程操作
  1. 打开本地vscode,安装插件remote ssh(作者Microsoft),开始配置
    点击小电脑标志:
    SSH TARGETS “+”号创建;
    小齿轮配置文件内容(选第一个config)
  2. 配置文件格式:
    Host:随便写,就是起个名。
    HostName:IP地址
    User: 远程主机登录的用户名
    Port:默认22,可以不写。
    IdentityFile:实体主机的私钥地址。(即windows10的私钥文件地址)

TIPS

  1. 可以在vscode可以直接打开虚拟机terminal,运行c/c++需要安装gcc
    sudo apt-get install g++
  2. 编译文件:g++ hello.c -o hello
  3. 运行文件:./hello 即可开心hello world!

或者,若希望在vscode中ctrl+f5运行; f5调试;
(必须要在某文件夹下配置,会发现在当前路径文件夹下多了一个.vscode文件夹,以下几个json配置文件都被放在其中,而原本该文件夹下的其他文件都被放在了某newdir中):

  1. 配置 c_cpp_properties.json 的includePath
    输入gcc -v -E -x c++ -查看几个include,粘贴
  2. 配置launch.json
    直接打开run->add configurations->生成的文件保存即可
  3. 配置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服务已在树莓派上安装。

树莓派的远程桌面登录
  1. 树莓派安装xrdp服务 (一个微软远程桌面协议(RDP)的开源实现)
    sudo apt-get install xrdp
  2. 启用windows自带的远程桌面
  1. win+r:再输入mstsc(或者直接搜索远程桌面,打开即可)
  2. 输入树莓派的ip,回车连接。再给用户名和密码,桌面就出来了!