Forem

Cover image for Setup Raspberry Pi 3 Model B+ with Ubuntu server and SSH over wifi
Wesley
Wesley

Posted on

1 1

Setup Raspberry Pi 3 Model B+ with Ubuntu server and SSH over wifi

Some things to say first:

  • At moment of testing the commands and writing this, I am using a ubuntu 18.04.3.
  • I don't have a Ethernet cable ¯\_㋡_/¯
  • My raspberry is the 3 Model B+ and my sdcard is a SAMSUNG EVO Select microSDXC 128 GB
  • This is my first post (treating it more like a "shared note") on dev.to community 🎉
  1. Download the ubuntu image 18.04.3-preinstalled-server-arm64+raspi3.img.xz (link taken found here)
  2. Flash the sdcard using balenaEtcher
  3. sudo nano /media/wesley/writable/etc/netplan/50-cloud-init.yaml
    It should contain:

    network:
        version: 2
        ethernets:
            eth0:
                optional: true
                dhcp4: true
        wifis:
            wlan0:
                optional: true
                access-points:
                    "YOUR-SSID-NAME":
                        password: "YOUR-NETWORK-PASSWORD"
                dhcp4: true
    

    Make sure to have navigated to writable partition, otherwise nano will complain the folder does not exist.

  4. sudo nano /media/wesley/writable/etc/cloud/cloud.cfg

    Should be like this:

    # The top level settings are used as module
    # and system configuration.
    
    # A set of users which may be applied and/or used by various modules
    # when a 'default' entry is found it will reference the 'default_user'
    # from the distro configuration specified below
    users:
       - default
    # If this is set, 'root' will not be able to ssh in and they
    # will get a message to login instead as the default $user
    disable_root: false
    
    # This will cause the set+update hostname module to not operate (if true)
    preserve_hostname: false
    hostname: YOUR-RASPBERRYPI-NAME
    
    # Example datasource config
    # datasource:
    #    Ec2:
    #      metadata_urls: [ 'blah.com' ]
    #      timeout: 5 # (defaults to 50 seconds)
    #      max_wait: 10 # (defaults to 120 seconds)
    
    # The modules that run in the 'init' stage
    cloud_init_modules:
     - migrator
     - seed_random
     - bootcmd
     - write-files
     - growpart
     - resizefs
     - disk_setup
     - mounts
     - set_hostname
     - update_hostname
     - update_etc_hosts
     - ca-certs
     - rsyslog
     - users-groups
     - ssh
    
    # The modules that run in the 'config' stage
    cloud_config_modules:
    # Emit the cloud config ready event
    # this can be used by upstart jobs for 'start on cloud-config'.
     - emit_upstart
     - snap
     - snap_config  # DEPRECATED- Drop in version 18.2
     - ssh-import-id
     - locale
     - set-passwords
     - grub-dpkg
     - apt-pipelining
     - apt-configure
     - ubuntu-advantage
     - ntp
     - timezone
     - disable-ec2-metadata
     - runcmd
     - byobu
    
    # The modules that run in the 'final' stage
    cloud_final_modules:
     - snappy  # DEPRECATED- Drop in version 18.2
     - package-update-upgrade-install
     - fan
     - landscape
     - lxd
     - ubuntu-drivers
     - puppet
     - chef
     - mcollective
     - salt-minion
     - rightscale_userdata
     - scripts-vendor
     - scripts-per-once
     - scripts-per-boot
     - scripts-per-instance
     - scripts-user
     - ssh-authkey-fingerprints
     - keys-to-console
     - phone-home
     - final-message
     - power-state-change
    
    # System and/or distro specific settings
    # (not accessible to handlers/transforms)
    system_info:
       # This will affect which distro class gets used
       distro: ubuntu
       # Default user name + that default users groups (if added/used)
       default_user:
         name: pi
         lock_passwd: True
         gecos: Pi
         groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video]
         sudo: ["ALL=(ALL) NOPASSWD:ALL"]
         shell: /bin/bash
         ssh_authorized_keys:
           - "CONTENT-OF-YOUR-SSH-PUB-KEY-HERE"
       # Automatically discover the best ntp_client
       ntp_client: auto
       # Other config here will be given to the distro class and/or path classes
       paths:
          cloud_dir: /var/lib/cloud/
          templates_dir: /etc/cloud/templates/
          upstart_dir: /etc/init/
       package_mirrors:
         - arches: [i386, amd64]
           failsafe:
             primary: http://archive.ubuntu.com/ubuntu
             security: http://security.ubuntu.com/ubuntu
           search:
             primary:
               - http://%(ec2_region)s.ec2.archive.ubuntu.com/ubuntu/
               - http://%(availability_zone)s.clouds.archive.ubuntu.com/ubuntu/
               - http://%(region)s.clouds.archive.ubuntu.com/ubuntu/
             security: []
         - arches: [arm64, armel, armhf]
           failsafe:
             primary: http://ports.ubuntu.com/ubuntu-ports
             security: http://ports.ubuntu.com/ubuntu-ports
           search:
             primary:
               - http://%(ec2_region)s.ec2.ports.ubuntu.com/ubuntu-ports/
               - http://%(availability_zone)s.clouds.ports.ubuntu.com/ubuntu-ports/
               - http://%(region)s.clouds.ports.ubuntu.com/ubuntu-ports/
             security: []
         - arches: [default]
           failsafe:
             primary: http://ports.ubuntu.com/ubuntu-ports
             security: http://ports.ubuntu.com/ubuntu-ports
       ssh_svcname: ssh
    
  5. Eject from your computer, inject the sdcard on the raspberry, connect the power and wait for about one minute.

  6. ssh pi@YOUR-RASPBERRYPI-NAME

ℹ️ first time you login it will ask for a password (type ubuntu) and then to change to a new password.

Many thanks to l --marc l user on stackoverflow. Steps on this post are 90% from his answer here. The other 10% comes from the cloud-init docs

Reinvent your career. Join DEV.

It takes one minute and is worth it for your career.

Get started

Top comments (2)

Collapse
 
kennergf profile image
Kenner Gonçalves

Do you know if this works on WPA2 wi-fi?

Collapse
 
hipsterdev profile image
Wesley

sorry, have not tried

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay