56

I don't have a screen for my Raspberry Pi. I want to SSH into it, but I get Connection Refused, so I presume SSH is not enabled.

As advised in other questions I have looked at enabling the boot_enable_ssh.rc script on the sd card. However I don't have a boot directory in my OS (or it is not visible via the card reader in my iMac) - 2012-12-16-wheezy-raspbian.img.

I have also tried issuing the following commands via a usb keyboard:

pi [enter]
raspberry [enter]
sudo /etc/init.d/ssh start [enter]
raspberry [enter]

But this hasn't worked. Now in some docs I see that raspi-config is the first thing to come on a newly booted RPi. Could someone tell me the keystrokes to enable SSH via raspi-config please? Or if I am on the wrong track, please advise. Thanks.

EDIT: In trying to follow this advice https://raspberrypi.stackexchange.com/a/1706/4373 I am not seeing an etc directory when mounting the SD card on my iMac. If I run ls from the terminal I only get the following:

bootcode.bin            fixup.dat               kernel.img            start.elf
cmdline.txt             fixup_cd.dat            kernel_cutdown.img      start_cd.elf
config.txt              issue.txt               kernel_emergency.img

Have I screwed up the imaging of the SD card?

Lemmy
  • 663
  • 1
  • 6
  • 6

10 Answers10

130

All you need is to place an empty file named 'ssh' onto the boot (FAT) partition of your SD card (no need to mount ext3). Tested with 2016-11-25-raspbian-jessie-lite.img.

Source: https://www.raspberrypi.org/documentation/remote-access/ssh/

More info about Nov '16 security update: https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/

Yahor
  • 1,401
  • 2
  • 9
  • 4
22

ssh is installed but not started by default on runlevel 2, the default for raspbian.
Rename /etc/rc2.d/ssh/K??ssh to /etc/rc2.d/ssh/S02ssh

EDIT
The sd card comes with 2 partitions. The 1st is vfat; the 2nd is ext3. You need some utility to access it from macosx.

1st google result for ext2 macosx:
http://blog.applegrew.com/2011/12/access-ext3ext2-file-system-on-mac-osx-lion-10-7/

Also check /var/log/auth.log

UPDATE 2016
The default raspberry distribution is now raspbian jessie, and uses systemd instead of sysvinit. The command line is now systemctl enable ssh.socket (although ssh should be enabled by default).

Note: I still have /etc/rc2.d/ssh/S02ssh and /var/log/auth.log after upgrading from wheezy to jessie; it may or may not be the case with a fresh jessie install.

M Noit
  • 926
  • 5
  • 7
15

I had the same issues using the wheezy image.

The goal is to have the Pi boot up so you can ssh into it from another system, without having to ever connect a monitor and keyboard.

The problem is that while the SSH service is enabled, as noted above, it hasn't been configured yet, so you can't connect even if networking is running. Here are the tasks to get this working:

  1. Put the image on the SD card. (Covered elsewhere.)

  2. Ensure that you can determine the TCP/IP address once your Pi boots.

    hint: Look at your router to see what addresses have been assigned.

  3. Ensure that ssh will run and allow connections. Here's how I did it:

    a. Mount the second SD Card partition, the big one with the etc directory.

    b. Create a file etc/SSHFLAG

    c. Insert the following code into etc/rc.local just above the exit 0 line.

    if [ -e /etc/SSHFLAG ]; then
      /usr/sbin/update-rc.d -f ssh defaults
      /bin/rm /etc/SSHFLAG
      /sbin/shutdown -r now
    fi
    

    The idea is that when your Pi boots, the SSHFLAG file triggers it to reconfigure ssh (regenerating the keys and starting the service), remove the flag file so it only happens once, and reboot your system. Worked for me, YMMV

nortally
  • 251
  • 2
  • 5
7

For headless setup, SSH can be enabled by placing a file named 'ssh', without any extension, onto the boot partition of the SD card.

Dan
  • 71
  • 1
  • 1
3

From my yesterday experience: 2012-12-16-wheezy-raspbian.img (suggested as "official distribution") has SSH enabled by default. Get it from http://www.raspberrypi.org/downloads

You don't have to edit anything on card or start raspi-config in "blind mode".

Just make sure you use a correct IP address. Use your router DHCP web-interface to get IP from the table; use cable, not WiFi; make sure that SD card is OK (you may try another SD-card); make sure that SD card filesystem is OK (try to write image again and don't forget to "eject" card properly).

kolontsov
  • 236
  • 1
  • 2
2

Got to this page via google after not using pi for a couple of months. After the recent update, ssh is disabled by default.

For the benefit of anyone doing a headless clean install of Jessie:

pi

raspberry

sudo nano /boot/ssh

test [or any other text]

[press ctrl-x]

y

sudo shutdown -r now

Done! All the best.

Remember to change your password and disable user 'pi' via ssh.

2

Just to update, there is a much simpler method for doing this.

As of the November 2016 release, Raspbian has the SSH server disabled by default. >You will have to enable it manually. This is done using raspi-config:

Enter sudo raspi-config in the terminal, first select Interfacing options, then >navigate to ssh, press Enter and select Enable or disable ssh server.

For headless setup, SSH can be enabled by placing a file named 'ssh', without any >extension, onto the boot partition of the SD card.

Source

CoderX
  • 186
  • 5
1

You have multiple partition on your SD card, and the files you are seeing from your Mac are those from the partition which is mounted as /boot/ on the Raspberry.

You should have another partition on the SD card that would store the root (aka /) partition, with all /etc/... stuff in it. Be sure to enable EXT3 filesystem support on your Mac to get this one available on Mac OS X.

1

Else I've just put this file on my boot partition and SSH started automatically. Link to boot_enable_ssh.rc

In fact, I've just found a Debian modification for the RPi on the net that had SSH enabled by default. I checked the boot partition and found this file!

Tiwenty
  • 213
  • 1
  • 2
  • 5
1

I hear a lot of "couldn't find it on the network" issues. I'm going to suggest running this to find all the machines with the ssh port open.

nmap 192.168.0.1/24 -p 22
# change the 192.168.0.1 part to match the first 3 octets of your ip address
# as seen via: ifconfig

This was very important to me as I do not have the admin password for the router I connect to. Now, I will say that even once I identified the ip address of my raspberry pi, I still couldn't connect even though nmap says the port was open. I immediately get a message of...

Connection closed by 192.168.0.116

I still haven't figured that one out.

Bruno Bronosky
  • 1,540
  • 17
  • 20