树莓派开发系列教程3--ssh、vnc远程访问
注意:树莓派系列的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用户在本地端能做的任何事情。
参考
完!
2016年4月
树莓派开发系列教程3--ssh、vnc远程访问的更多相关文章
- 树莓派开发系列教程2--树莓派3B介绍及系统烧写、基本配置
注意:树莓派系列的3篇文章里面的图片因为博客转移过程丢失了,非常抱歉 前言 树莓派系列里涉及到需要额外电脑来协助处理的部分(如烧写系统,远程访问等等),统一在运行着Ubuntu15系统的mac air ...
- 树莓派开发系列教程3——树莓派rasp-config配置(转)
经过前面两步我们的树莓派已经正常的工作起来了,但是在真正用它开发之前还需要进行一些列的配置以及软件的安装,这样开发起来才会得心应手,下面我们介绍一下常用的软件和服务 1.配置选项: 树莓派第一次使用的 ...
- C#微信公众号开发系列教程三(消息体签名及加解密)
http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...
- C#微信公众号开发系列教程二(新手接入指南)
http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...
- 微信公众号开发系列教程一(调试环境部署续:vs远程调试)
http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...
- C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- C#微信公众号开发系列教程五(接收事件推送与消息排重)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- C#微信公众号开发系列教程四(接收普通消息)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- EcShop二次开发系列教程–总纲
EcShop作为老牌的B2C独立网店系统,功能非常全名,强大的文件.数据库缓存机制,保证前后台系统执行速度更快.系统平稳运行.但是过多的功能也或多或少的会影响到系统的整个效率,所有在使用EcShop搭 ...
随机推荐
- inline函数的总结
在函数返回类型前加上关键字inline就可以将函数指定为内联函数: inline const string& shortString(const string &s1, const s ...
- wp开发(二)--获取用户篇
本文从个人开发者的角度来谈如何让wp应用获得尽可能多的用户.当然前提是你的app有一定的竞争性,如果不具备竞争力,那再多的用户下载也是白扯,所以最关键的还是要保证app的质量. 一. 程序图标 千万不 ...
- 【JavaScript&jQuery】$.ajax()
$(function(){ $('#send').click(function(){ $.ajax({ type: "GET", url: "test.json" ...
- 洛谷 P1231 教辅的组成(网络最大流+拆点加源加汇)
题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书 ...
- Kinect实现简单的三维重建
Kinect想必大家已经很熟悉了,最近基于Kinect的创意应用更是呈井喷状态啊!看到很多国外大牛用Kinect做三维重建,其中最著名的要数来自微软研究院的Kinect Fusion了,可以看看下面这 ...
- hihocoder 1580 dp最大子矩阵和
题意: 给出n*m的矩阵求最大子矩阵和,要求必须把矩阵中的某一个元素替换成p 代码: //求最大子矩阵和,容易想到压缩之后dp但是这道题要求必须替换一次p,必然优先替换最小的. //这样如果求得的结果 ...
- 小程序navigatorTo缺点和修正方法
1.不好带参数跳转到tabbar,即下部的导航栏目. reLauntch方法可以传递参数到导航栏目: go_to_prolist: function (e) { var datatype = e.cu ...
- 「Django」rest_framework学习系列-渲染器
渲染器:作用于页面,JSONRenderer只是JSON格式,BrowsableAPIRenderer有页面,.AdminRenderer页面以admin形式呈现(需要在请求地址后缀添加?fromat ...
- [DeeplearningAI笔记]卷积神经网络1.9-1.11池化层/卷积神经网络示例/优点
4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9池化层 优点 池化层可以缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性. 池化层操作 池化操作与卷积操作类似 ...
- numpy数组中冒号和负号的含义
numpy数组中":"和"-"的意义 觉得有用的话,欢迎一起讨论相互学习~Follow Me 在实际使用numpy时,我们常常会使用numpy数组的-1维度和& ...