On my work, technology and related stuff....

Posts Tagged ‘public key’

4 comments

If you are developing for/on a jailbroken iPhone or iPad you are more than likely going to have to SSH into your iDevice a number of times. This includes transferring files to/from the device via SCP. Entering a password every time you have to SSH into the device is very tedious.  Moreover, this becomes imperative if you need automation scripts to SSH/SCP into the device
 
This post explains how you can enable public-key authentication with SSH in order to bypass the password entry process. Note that enabling password-less entry into your iDevice is a potential security risk because anyone with access to your system can now access/control your device without any authentication. So if you enable this, be sure to secure access to your systems!

The steps to enable public-key authentication with the iPhone/iPad are no different than with any UNIX system.
 
The following commands need to be executed on the system from which you would be SSHing into your iPhone/iPad.
If you are using a Mac or a Linux system, the commands are executed from the terminal window.  If you are using a Windows PC, you would have to run these commands within Cygwin

  • Go to the .ssh folder

MyMacBook-Pro-2:~.mactester$ cd ~/.ssh

  • Generate public/private key-pair by running the ssh-keygen command. You will be prompted for some information. You can leave the file to save the key as default. Enter a passphrase . You will be prompted for the passphrase when you try to access your key.

MyMacBook-Pro-2:.ssh mactester$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/Users/mactester/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/mactester/.ssh/id_dsa.
Your public key has been saved in /Users/mactester/.ssh/id_dsa.pub.

  • A public/private key pair would have been generated in the .ssh folder. The .pub file corresponds to the public key.

MyMacBook-Pro-2:.ssh mactester$ ls
id_dsa             id_dsa.pub

  • Copy the PUBLIC KEY over to the ~/.ssh folder of your iPhone/iPad (in this example, the IPAddress of my device is 192.168.1.10)

MyMacBook-Pro-2:.ssh mactester$ scp id_dsa.pub root@192.168.1.10:~/.ssh

The following commands need to be executed on your iPhone/iPad.
For this, you can SSH into the iDevice  (You would still be prompted for a password at this stage) or  you can type in the following commands directly in the terminal application window of your jailbroken iDevice

  • Save the public key as “authorized_keys”. If you already have public keys associated with other systems stored on your device, be sure to append the public key to “authorized_keys2” as shown in the example below. Make sure you set the right access permissions on the key.

MyiPhone:~root# cd ~/.ssh
MyiPhone:~/.ssh root# cat id_dsa.pub >> authorized_keys2
MyiPhone:~/.ssh root#chmod 0600 authorized_keys2

That’s it. The next time you SSH into your iDevice, you will not be prompted for a password.