树莓派开发系列教程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搭 ...
随机推荐
- es6中对象转数组,转map
//对象转数组let array = Object.keys(userPermission).map(key=> userPermission[key]) console.log(array) ...
- post方法的数据类型
form-data.x-www-form-urlencoded.raw.binary的区别 1. form-data 就是http请求中的multipart/form-data,它会将表单的数据处理为 ...
- PHP 中数组获取不到元素
早上看到 SO 上一个有关 PHP 的问题,提问者描述有一个数组,使用 print_r 可以看到索引 key 和相对应的 value 都是存在的,但是访问该元素,不管是使用 array[key] 还是 ...
- eclipse启动报错: No Java virtual machine
在 scala-ide下载集成scala包的eclipse版本使用,启动时报错: A java runtime environment (JRE) or java development kit (J ...
- 【刷题】HDU 4966 GGS-DDU
Problem Description Do you think this is a strange problem name? That is because you don't know its ...
- C++ 指针[转+原创]
要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区. 指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉 ...
- Linux内核设计与实现第六周读书笔记
第三章 进程管理 3.1 进程 进程是处于执行期的代码.通常进程还要包含其他资源,像打开的文件.挂起的信号.内核的内部数据.处理器状态.一个或多个具有内存映射的内存地址空间及一个或多个执行线程,当然还 ...
- 【字符串】KMP字符串匹配
百度百科 Definition \(KMP\)算法是一个字符串匹配算法.他接收两个字符串\(A,B\),返回\(B\)在\(A\)中出现的所有位置. 以下称需要被匹配的串\(A\)为主串,可能在主串中 ...
- Codeforces Round #336 (Div. 2)B 暴力 C dp D 区间dp
B. Hamming Distance Sum time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- 简单shell 编程
简单shell编程 by dreamboy #!/bin/bash while true do echo clear echo echo " 系统维护菜单 " echo &qu ...