注意:树莓派系列的3篇文章里面的图片因为博客转移过程丢失了,非常抱歉

前言

  远程访问有很多种方式可以实现。比如ssh、telnet、ftp、samba、远程桌面等等,各有优缺点。本文主要以ssh和远程桌面的方式进行介绍。

ssh访问方式

  这种方式是非图形界面的远程访问,是在终端下的远程访问方式。该访问方式的安全由密钥对这种非对称加密方式来保证。默认情况下,Raspbian系统已经开启了ssh服务(如果没有开启,可以通过raspi-config来开启,可以通过netstat -antp 来查看ssh是否开启),而且端口为22,因此我们可以直接通过下面命令远程登陆:

ssh pi@192.168.1.112

上面命令执行完后会要求输入pi的密码。如果你没修改过密码,那么就会是默认的raspberry,否则输入你修改后的密码即可正确登陆上。这种方式每次都要求输入密码,挺麻烦的,我们可以通过下面的配置实现无需输入密码登陆。

首先得在ubuntu系统里创建一个密钥对,如果之前已经创建过,那么可以跳过这一步。执行下面命令用于创建密钥对:

ssh-keygen -t rsa

如果想指定一个名字xxx,可以执行

ssh-keygen -t rsa -f xxx (这种方式生成的密钥对在当前目录下,需要拷贝到~/.ssh/下)

执行后,会提示是否对私有添加一个密码,一般情况下可以不用,所以一直回车下去就可以了,最终会在~/.ssh/下创建一对秘钥(xxx和xxx.pub)。有了密钥对后,我们还得做一个动作就可以实现无需输入密码登陆了。执行下面命令:

ssh-copy-id -i ~/.ssh/admin.pub pi@192.168.1.112

如果你没有通过-f指定名字,那么上面命令可以简化为

ssh-copy-id pi@192.168.1.112

如果你没有通过-f指定名字,那么应该可以通过下面命令直接登陆了

ssh pi@192.168.1.112

如果你通过-f指定过名字,那么需要通过下面命令指定使用哪一个秘钥来直接登陆

ssh -i ~/.ssh/xxx pi@192.168.1.112

有些人可能觉得用-f指定名字后,增加了一堆操作,自找麻烦。其实这和每个人的环境有关,有些人需要通过ssh访问很多东西,比如gitlab、vps主机等等,如果都用同一个密钥对,可能会觉得不安全,不要把鸡蛋放在同一个篮子里的道理大家都懂的。然而如果你没有安全方面的需求,那么用同一个密钥对就可以了,再说即使不同的密钥对,放在同一主机上也是不安全的,对吧!如果真要为安全考虑,那应该将它们放到u盘上,再对其做个加密_

经过了上面的配置,一个命令就直接登陆了,已经很方便吧,但是如果你还是觉得命令太长,想简单点,那么继续往下看

我们可以在ubuntu系统的~/.ssh目录下创建一个config文件,里面添加如下内容:

host pi
user pi
hostname 192.168.1.112
port 22
IdentityFile ~/.ssh/admin

这里需要说明一下,host pi这里大家可以随意修改pi为任意字串,最终登陆的命令行上会用到它。user pi指定通过远程的哪个账号登陆。hostname指定远程树莓派的ip,这里改为域名也行。port 指定端口。IdentityFile字段最重要了,指定用哪个秘钥。

通过上面的配置,在命令行上输入:

ssh pi

就可以直接登陆了。ssh的原理以及上面这些操作都是什么意思我没有详细说明,真要写的话,估计得另开一篇博文专门讲解了。

远程桌面

  这种方式是以图形界面操作方式访问远程树莓派,远程系统的界面直接呈现在我们电脑上,类似于windows下的远程桌面。这种方式需要远程树莓派系统和本地ubuntu系统都安装相关软件,这里我们以VNC这种远程桌面软件来讲解。

  先ssh到远程树莓派系统,安装软件vnc服务端软件。执行下面命令:

sudo apt-get install tightvncserver

安装完后,再执行tightvncserver来配置下,主要是配置下远程客户端访问时的密码,后面的Would you like to enter a view-only password (y/n)?输入n就可以了。配置完后,会打印出如下信息:

New 'X' desktop is raspberrypi:1

Creating default startup script /home/pi/.vnc/xstartup
Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/raspberrypi:1.log

里面有一个关键字段raspberrypi:1告诉我们是在:1上,客户端访问时需要用到。

  ubuntu下通过安装VNC客户端来实现远程桌面访问树莓派,执行下面命令来安装vnc客户端

sudo apt-get install xtightvncviewer

安装完后,执行vncviewer就会弹出一个窗口,输入192.168.1.122:1,然后会提示你输入密码,这个密码就是刚才设置的密码,这样之后就登陆了,看下面界面截图:

操作起来就好像你坐在接了显示器的树莓派电脑前一样_

总结

  ssh的访问方式可能对于没用习惯命令行的人来说不太适应,但是它没有远程桌面方式对网络的高要求问题,网速太慢的话,远程桌面方式会很卡。总的来说,它们的操作都不受限制,能做pi用户在本地端能做的任何事情。

参考

RPi VNC Server - eLinux.org

完!

2016年4月

树莓派开发系列教程3--ssh、vnc远程访问的更多相关文章

  1. 树莓派开发系列教程2--树莓派3B介绍及系统烧写、基本配置

    注意:树莓派系列的3篇文章里面的图片因为博客转移过程丢失了,非常抱歉 前言 树莓派系列里涉及到需要额外电脑来协助处理的部分(如烧写系统,远程访问等等),统一在运行着Ubuntu15系统的mac air ...

  2. 树莓派开发系列教程3——树莓派rasp-config配置(转)

    经过前面两步我们的树莓派已经正常的工作起来了,但是在真正用它开发之前还需要进行一些列的配置以及软件的安装,这样开发起来才会得心应手,下面我们介绍一下常用的软件和服务 1.配置选项: 树莓派第一次使用的 ...

  3. C#微信公众号开发系列教程三(消息体签名及加解密)

    http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...

  4. C#微信公众号开发系列教程二(新手接入指南)

    http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...

  5. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...

  6. C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  7. C#微信公众号开发系列教程五(接收事件推送与消息排重)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  8. C#微信公众号开发系列教程四(接收普通消息)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  9. EcShop二次开发系列教程–总纲

    EcShop作为老牌的B2C独立网店系统,功能非常全名,强大的文件.数据库缓存机制,保证前后台系统执行速度更快.系统平稳运行.但是过多的功能也或多或少的会影响到系统的整个效率,所有在使用EcShop搭 ...

随机推荐

  1. Kafka设计解析

    Kafka剖析(一):Kafka背景及架构介绍 Kafka设计解析(二):Kafka High Availability (上) Kafka设计解析(三):Kafka High Availabilit ...

  2. 第210天:node、nvm、npm和gulp的安装和使用详解

    一.node 1.什么是node? 它不是JS文件,也不是JS框架,而是Server side JavaScript runtime,当服务端的一个JS文件运行时,会被NODE拦截,在NODE中运行J ...

  3. 下载文件 通过a 标签 请求某个servlet进行下载的

    下载文件 通过a 标签 请求某个servlet进行下载的

  4. 【省选水题集Day1】一起来AK水题吧! 题解(更新到B)

    题目:http://www.cnblogs.com/ljc20020730/p/6937936.html 水题A:[AHOI2001]质数和分解 安徽省选OI原题!简单Dp. 一看就是完全背包求方案数 ...

  5. poj3469 Dual Core CPU

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 25576   Accepted: 11033 ...

  6. protobuf手册

    1. c++快速上手 https://developers.google.com/protocol-buffers/docs/cpptutorial 2. c++使用手册 https://develo ...

  7. 调整的R方_如何选择回归模型

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...

  8. 基于JavaSE阶段下的集合类汇总

    一.数组与集合的区别 数组和集合都是用来存储对象的容器,但是,数组只能储存基本数据类型的对象,且长度不可变:而集合是储存引用数据类型的对象,且长度可变,所以,在不知对象数量的具体数值时一般用集合来存储 ...

  9. powerdesigner中把表的描述复制到Name

    '****************************************************************************** '* File: comment2nam ...

  10. 理解PV操作和信号量

    对于信号量,可以认为是一个仓库,有两个概念,容量和当前的货物个数. P操作从仓库拿货,如果仓库中没有货,线程一直等待,直到V操作,往仓库里添加了货物,为了避免P操作一直等待下去,会有一个超时时间. V ...