changeset 73:6bfd95cb5744

Added setup-ssh scripts, borrowed from digital-foley
author Giulio Moro <giuliomoro@yahoo.it>
date Fri, 17 Jul 2015 20:18:22 +0100
parents d837fb676977
children 0598731d3bef
files scripts/setup-ssh-windows.sh scripts/setup-ssh.sh
diffstat 2 files changed, 174 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/setup-ssh-windows.sh	Fri Jul 17 20:18:22 2015 +0100
@@ -0,0 +1,87 @@
+#!/bin/bash
+IP_ADDRESS="192.168.7.2"
+PRIVATE_KEY_FILENAME=$HOME/.ssh/id_rsa #if you change this to something like bbb_rsa it will be safer when cleaning but if you don't have the config file you will have to  
+                                        # ssh -i $HOME/.ssh/bbb_rsa  root@192.168.7.2
+                                        # in order to log in
+CONFIG_FILENAME=$HOME/.ssh/config
+CLEAN=0
+if [ $# -gt 0 ]; then
+  while (( "$#" )); do
+    if [ $1 = "-k" ]; then 
+      if [[ $2 == "/"* ]]; then
+        #it's full path
+        PRIVATE_KEY_FILENAME=$2
+      else
+        #assume it's a key in .ssh
+        PRIVATE_KEY_FILENAME=$HOME'/.ssh/'$2
+      fi
+      shift
+      shift
+      continue
+    fi
+    if [ $1 = "-i" ]; then 
+      IP_ADDRESS=$2
+      shift
+      shift
+      continue
+    fi
+    if [ $1 = "clean" ] ; then
+      CLEAN=1
+      shift
+      continue
+    fi
+    #if we get here, then a wrong number or type of parameters have been passed 
+    echo "Generates a key pair (if does not exist) and copies it over to the host, saving the settings in the /.ssh/config file
+    Usage:
+    -i [ipAddress] sets the host to authenticate to (default: 192.168.7.1)
+    -k [filename] sets the key file to use for autentication
+                  (default: ~/.ssh/id_rsa)" 
+    exit 1;
+  done;
+fi
+
+if [ $CLEAN -eq 1 ] ; then
+  printf "Cleaning ${PRIVATE_KEY_FILENAME}, ${PRIVATE_KEY_FILENAME}.pub, ${CONFIG_FILENAME} and bbb:~/.ssh/ . Are you sure? This might prevent you from accessing other services that use the same key or config files (y/n) "
+  read sure
+  if [ $sure = "y" ] ; then 
+    ssh root@192.168.7.2 rm -rf .ssh &&\
+    rm $PRIVATE_KEY_FILENAME ${PRIVATE_KEY_FILENAME}.pub $CONFIG_FILENAME
+    if [ $? -ne 0 ] ; then
+      printf "ERROR: error while cleaning"
+      exit 4
+    fi
+    printf "Cleaning succesful"
+    exit 0
+  fi
+fi
+printf Pinging the Beaglebone on $IP_ADDRESS
+ping $IP_ADDRESS -w 1000 -n 1 &>/dev/null #returns 1 if ping is unsuccesful
+if [ $? -ne 0 ] ; then   # $? is the return value of the last command
+  echo "Error: the Beaglebone is not alive, make sure it is connected and drivers are installed (MacOs and Windows only) or try again later" ;
+  exit 1
+fi;
+printf "...done\n"
+
+mkdir -p $HOME/.ssh # create the ssh folder if it does not exist
+printf '\nHost bbb\nHostname '$IP_ADDRESS'\nUser root\nIdentityFile '$PRIVATE_KEY_FILENAME'\n' >> $HOME/.ssh/config
+
+printf "Generating key $PRIVATE_KEY_FILENAME if it does not exist"
+ls $PRIVATE_KEY_FILENAME &>/dev/null || ssh-keygen -t rsa -f $PRIVATE_KEY_FILENAME -q -P "" # the command after || will be executed only if the previous command fails (i.e. if id_rsa does not exist)
+if [ $? -ne 0 ] ; then
+  printf "\nERROR: an error occurred while creating key pair $PRIVATE_KEY_FILENAME\n"
+  exit 2
+fi
+printf "...Done\n"
+
+printf "Type 'a' (without quotes) when prompted for a password: \n"
+
+# StrictHostKeyChecking=no below will prevent the following message upon the first connection:
+# "The authenticity of host '192.168.1.2' can't be established."
+# which would require the user to type 'yes'
+cat ${PRIVATE_KEY_FILENAME}.pub | (ssh -q -o StrictHostKeyChecking=no bbb 'mkdir -p .ssh; cat > .ssh/authorized_keys')
+if [ $? -ne 0 ] ; then
+  printf "ERROR: An error occurred while copying the public key  to the BBB\n"
+  exit 3
+fi
+printf "SSH setup complete. You can now ssh into the beaglebone with command: ssh bbb\n"
+exit 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/setup-ssh.sh	Fri Jul 17 20:18:22 2015 +0100
@@ -0,0 +1,87 @@
+#!/bin/bash
+IP_ADDRESS="192.168.7.2"
+PRIVATE_KEY_FILENAME=$HOME/.ssh/id_rsa #if you change this to something like bbb_rsa it will be safer when cleaning but if you don't have the config file you will have to  
+                                        # ssh -i $HOME/.ssh/bbb_rsa  root@192.168.7.2
+                                        # in order to log in
+CONFIG_FILENAME=$HOME/.ssh/config
+CLEAN=0
+if [ $# -gt 0 ]; then
+  while (( "$#" )); do
+    if [ $1 = "-k" ]; then 
+      if [[ $2 == "/"* ]]; then
+        #it's full path
+        PRIVATE_KEY_FILENAME=$2
+      else
+        #assume it's a key in .ssh
+        PRIVATE_KEY_FILENAME=$HOME'/.ssh/'$2
+      fi
+      shift
+      shift
+      continue
+    fi
+    if [ $1 = "-i" ]; then 
+      IP_ADDRESS=$2
+      shift
+      shift
+      continue
+    fi
+    if [ $1 = "clean" ] ; then
+      CLEAN=1
+      shift
+      continue
+    fi
+    #if we get here, then a wrong number or type of parameters have been passed 
+    echo "Generates a key pair (if does not exist) and copies it over to the host, saving the settings in the /.ssh/config file
+    Usage:
+    -i [ipAddress] sets the host to authenticate to (default: 192.168.7.1)
+    -k [filename] sets the key file to use for autentication
+                  (default: ~/.ssh/id_rsa)" 
+    exit 1;
+  done;
+fi
+
+if [ $CLEAN -eq 1 ] ; then
+  printf "Cleaning ${PRIVATE_KEY_FILENAME}, ${PRIVATE_KEY_FILENAME}.pub, ${CONFIG_FILENAME} and bbb:~/.ssh/ . Are you sure? This might prevent you from accessing other services that use the same key or config files (y/n) "
+  read sure
+  if [ $sure = "y" ] ; then 
+    ssh root@192.168.7.2 rm -rf .ssh &&\
+    rm $PRIVATE_KEY_FILENAME ${PRIVATE_KEY_FILENAME}.pub $CONFIG_FILENAME
+    if [ $? -ne 0 ] ; then
+      printf "ERROR: error while cleaning"
+      exit 4
+    fi
+    printf "Cleaning succesful"
+    exit 0
+  fi
+fi
+#printf "Pinging the Beaglebone on $IP_ADDRESS\n"
+#ping $IP_ADDRESS -w 1000 -c &>/dev/null 1 #returns 1 if ping is unsuccesful
+#if [ $? -ne 0 ] ; then   # $? is the return value of the last command
+#  echo "Error: the Beaglebone is not alive, make sure it is connected and drivers are installed (MacOs and Windows only) or try again later" ;
+#  exit 1
+#fi;
+#printf "...done\n"
+
+mkdir -p $HOME/.ssh # create the ssh folder if it does not exist
+printf '\nHost bbb\nHostname '$IP_ADDRESS'\nUser root\nIdentityFile '$PRIVATE_KEY_FILENAME'\n' >> $HOME/.ssh/config
+
+printf "Generating key $PRIVATE_KEY_FILENAME if it does not exist"
+ls $PRIVATE_KEY_FILENAME &>/dev/null || ssh-keygen -t rsa -f $PRIVATE_KEY_FILENAME -q -P "" # the command after || will be executed only if the previous command fails (i.e. if id_rsa does not exist)
+if [ $? -ne 0 ] ; then
+  printf "\nERROR: an error occurred while creating key pair $PRIVATE_KEY_FILENAME\n"
+  exit 2
+fi
+printf "...Done\n"
+
+printf "Type 'a' (without quotes) when prompted for a password: \n"
+
+# StrictHostKeyChecking=no below will prevent the following message upon the first connection:
+# "The authenticity of host '192.168.1.2' can't be established."
+# which would require the user to type 'yes'
+cat ${PRIVATE_KEY_FILENAME}.pub | (ssh -q -o StrictHostKeyChecking=no bbb 'mkdir -p .ssh; cat > .ssh/authorized_keys')
+if [ $? -ne 0 ] ; then
+  printf "ERROR: An error occurred while copying the public key  to the BBB\n"
+  exit 3
+fi
+printf "SSH setup complete. You can now ssh into the beaglebone with command: ssh bbb\n"
+exit 0