In case our router doesn’t have a DHCP server (unlikely) or it doesn’t support binding IP addresses to MAC addresses so we always get the same IP for our Pi (possible), we need to set a static IP on the Pi. That way we can make sure the Pi will be reachable on the same IP even across router reboots.

Raspbian Lite “Jessie” uses the dhcpcd.conf file to set up static IPs for the network interfaces.

Mine looks like this (the impartant part, concerning wlan0 is at the very end)

pi@nulla:~ $ cat /etc/dhcpcd.conf
# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
#duid

# Persist interface configuration when dhcpcd exits.
persistent

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Most distributions have NTP support.
option ntp_servers
# Respect the network MTU.
# Some interface drivers reset when changing the MTU so disabled by default.
#option interface_mtu

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate Stable Private IPv6 Addresses instead of hardware based ones
slaac private

# A hook script is provided to lookup the hostname if not set by the DHCP
# server, but it should not be run by default.
nohook lookup-hostname
interface eth0

static ip_address=192.168.1.99/24
static routers=192.168.1.254
static domain_name_servers=192.168.1.254

interface wlan0

static ip_address=192.168.1.100/24
static routers=192.168.1.254
static domain_name_servers=192.168.1.254

That’s it, just reboot the Pi, and you should able to reach it via SSH on the static IP we’ve set!

This tutorial has been revised on: 2017-Oct-10
Tested on OS image: 2017-09-07-raspbian-stretch-lite.img