树莓派远程通信(可外网访问)

一,配置树莓派

先装系统,这里网上教程比较多不在赘述了。

二,分配固定IP

这里方法有很多种,简述其中一种。装好系统盘后boot下有个名为cmdline.txt的文件,前面加上ip=想分配给树莓派的固定ip。(记得后面加个空格)
如图:
树莓派远程通信(可外网访问)_第1张图片
现在给树莓派插上网线会自动获取192.168.1.123这个ip。
注意:192.168.1.xx 是我路由器的网段,不一定适合所有人。可以在cmd输入ipconfig查看你电脑的ip。
举个例子:
树莓派远程通信(可外网访问)_第2张图片
可以看到此时我是WLAN连接,ip为192.168.1.105,子网掩码255.255.255.0所以此时的网段就是192.168.1.xx
如果子网掩码是255.255.0.0,那网段就是192.168.xx.xx
子网掩码只能是0或255
如果你的ip是10.1.1.23,子网掩码为255.255.255.0,给固定ip时要写10.1.1.x(x是你任意指定的值尽量在10-240)

三,内网穿透

由于此时我们的树莓派连的是局域网,可以访问公网,但无法通过公网访问树莓派实现远程控制与信息交互。所以要将我们的ip与端口映射到公网。这个网上有很多产品,每家的产品使用方法也不相同。但最后都会给你一个域名,一个端口。会将自己树莓派的ip和端口映射到他们端口(建议选择22端口号,是用于ssh连接的,也可以将ssh的22端口号改到其他端口,此时选择你改的端口号)。记好给的域名与端口号。

四,链接

方式1:putty连接
HostName输入给的域名(如果想填ip,可以通过命令:nslookup 域名 来解析域名的IP地址)

Port输入给的端口号(一般都几千以上)

点open,再输入你树莓派的用户名和密码即可。
树莓派远程通信(可外网访问)_第3张图片

方式2:
脚本连接:
这里找了一个比较好用的python脚本
文件上传下载:

import paramiko

trans = paramiko.Transport(
    sock=("填写用nslookup解析出来的域名ip地址", 12345) #12345是分配给我的端口号,改成你的
)

trans.connect(
    username="raspberry用户名",
    password="raspberry密码"
)
sftp = paramiko.SFTPClient.from_transport(trans)

# 上传
# 把本地的文件单表替换加密.txt,上传到远端为/home/pi/test/1.txt
sftp.put("单表替换加密.txt", "/home/pi/test/1.txt")

# 下载
# 从远程/root/Desktop/hh.py获取文件下载到本地名称为hh.py
# sftp.get("/root/Desktop/hh.py","hh.py")

sftp.close()

python脚本输入命令:

import paramiko

# 创建一个ssh的客户端,用来连接服务器
ssh = paramiko.SSHClient()
# 创建一个ssh的白名单
know_host = paramiko.AutoAddPolicy()
# 加载创建的白名单
ssh.set_missing_host_key_policy(know_host)

# 连接服务器
ssh.connect(  #与上面同理
    hostname="IP",
    port=12345,
    username="用户名",
    password="密码"
)

# 执行命令
stdin, stdout, stderr = ssh.exec_command("ls")
# stdin  标准格式的输入,是一个写权限的文件对象
# stdout 标准格式的输出,是一个读权限的文件对象
# stderr 标准格式的错误,是一个写权限的文件对象


print(stdout.read().decode())  #会输出ls的执行结果


ssh.close()

此刻,即使你与树莓派相隔万里,也能实时通信。
方式三
终端链接
ssh -p xx user@ip xx 为 端口号 user为用户名 ip为要登陆的ip

你可能感兴趣的:(经验分享,ssh,运维,树莓派)