树莓派学习之远程登录

每次通过USB转串口登录树莓派比较麻烦,可以设置树莓派开启ssh和vnc服务,以便通过ssh或vnc远程登录树莓派。下面介绍在Debian中通过ssh或vnc远程登录树莓派的过程。

基础知识

SSH

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。

SSH基本用法

1
2
3
4
# 以用户名user,登录远程主机host
$ ssh user@host
# SSH的默认端口是22。使用p参数,可以修改这个端口。
$ ssh -p 2222 user@host

SSH通信过程及风险

SSH采用了公钥加密保证安全。

整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

这个过程本身是安全的,但是实施的时候存在”中间人攻击”风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

VNC

VNC(Virtual Network Computing),为一种使用RFB协议的显示屏画面分享及远程操作软件。此软件借由网上,可发送键盘与鼠标的动作及即时的显示屏画面。

VNC与操作系统无关,因此可跨平台使用,例如可用Windows连线到某Linux的计算机,反之亦同。甚至在没有安装客户端程序的计算机中,只要有支持JAVA的浏览器,也可使用。

原理

VNC系统由客户端,服务端和一个协议组成

VNC的服务端目的是分享其所运行机器的屏幕,服务端被动的允许客户端控制它。VNC客户端(或Viewer)观察控制服务端,与服务端交互。VNC协议Protocol(RFB)是一个简单的协议,传送服务端的原始图像到客户端(一个X,Y位置上的正方形的点阵数据),客户端传送事件消息到服务端。

服务器发送小方块的帧缓存给客户端,在最简单的情况,VNC协议使用大量的带宽,因此各种各样的方法被发明出来减少通讯的开支,举例来说,有各种各样的编码方法来决定最有效率的方法来传送这些点阵方块。

VNC默认使用TCP端口5900至5906,而JAVA的VNC客户端使用5800至5806。一个服务端可以在5900端口用“监听模式”连接一个客户端,使用监听模式的一个好处是服务端不需要设置防火墙。

安全性

VNC并非是安全的协议,虽然VNC伺服程序需设置密码才可接受外来连线,且VNC客户端与VNC伺服程序之间的密码传输经过加密,但仍可被轻易的拦截到并使用暴力破解法破解。不过VNC可设计以SSH或VPN传输,以增加安全性。

VNC软件

由于VNC以GPL授权,派生出了几个VNC软件:

  • RealVNC:由VNC团队部分成员开发,分为全功能商业版及免费版。
  • TightVNC:强调节省带宽使用。
  • UltraVNC:加入了TightVNC的部分程序及加强性能的图型映射驱动程序,并结合Active Directory及NTLM的账号密码认证,但仅有Windows版本。
  • Vine Viewer:MacOSX的VNC客户端。

配置树莓派支持SSH和VNC

通过USB转串口登录树莓派后,按如下步骤开启SSH和VNC:

  1. 运行命令raspi-config
    1
    sudo raspi-config
  2. 选择第五项Interfacing Options
  3. 选择enable SSH
  4. 启用SSH,重复步骤一和二,再选择enable VNC。

通过SSH或VNC连接树莓派

debian主机与树莓派在同一个局域网内,则按如下步骤通过SSH或VNC连接树莓派。

通过nmap命令获取树莓派ip地址

1
2
3
4
5
6
7
8
9
10
11
$ nmap 192.168.0.1/24
Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-08 13:08 CST

Nmap scan report for 192.168.0.103
Host is up (0.041s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
5900/tcp open vnc

Nmap done: 256 IP addresses (6 hosts up) scanned in 35.77 seconds

开启22和5900端口的主机即是树莓派。

通过ssh远程登录树莓派

1
2
# 首次登录会给出主机认证不能建立的提示,输入yes可继续,再输入用户密码即可远程登录树莓派
$ ssh pi@192.168.0.103

通过vnc远程登录树莓派

  1. 通过ssh登录树莓派后查看其使用的vnc程序

    1
    2
    3
    $ apt list --installed | grep vnc
    realvnc-vnc-server/now 6.3.1.36657 armhf [已安装,可升级至:6.3.2.39069]
    # 可知,树莓派上使用realvnc程序
  2. 在Debian上安装realvnc客户端程序realvnc-vnc-viewer

  3. 在终端输入vncviewer,输入树莓派ip、用户名、密码即可登录树莓派

参考文献

  1. SSH原理与运用(一):远程登录,by 阮一峰.
  2. Secure Shell,by wikipedia.
  3. VNC,by wikipedia.
  4. VPN原理与简单应用,by 新盟-胡巴.