ssh key is now automatic no need to configure it
authorSam <sam.saffron@gmail.com>
Fri, 21 Mar 2014 03:55:48 +0000 (14:55 +1100)
committerSam <sam.saffron@gmail.com>
Fri, 21 Mar 2014 03:55:48 +0000 (14:55 +1100)
README.md
launcher
samples/data.yml
samples/redis.yml
samples/standalone.yml
samples/web_only.yml
templates/sshd.template.yml

index 8dd3b846edcd30fdd6a7760dd654e4fa7bc811c4..97b5791a9e0972ab4c2032fc161f948cc2298d1c 100644 (file)
--- a/README.md
+++ b/README.md
@@ -149,21 +149,7 @@ For a Discourse instance to function properly Email must be set up. Use the `SMT
 
 ### Troubleshooting
 
-We strongly recommend you have ssh access to your running containers, this allows you very easily take a sneak peek at internals. The simplest way to gain access is:
-
-1. Run a terminal as root
-1. `ssh-keygen -b 2048 -t rsa -N "" -C "root's unprotected key" -f ~root/.ssh/id_rsa`
-1. Paste the contents of `~root/.ssh/id_rsa.pub` into your templates (see placeholder `YOUR_SSH_KEY` in samples)
-1. Bootstrap and run your container
-1. `./launcher ssh my_container`
-
-Or, if you're running as a regular user:
-
-1. Run a terminal
-1. `ssh-keygen -b 2048 -t rsa -N "" -C "my unprotected key" -f ~/.ssh/id_rsa`
-1. Paste the contents of `~/.ssh/id_rsa.pub` into your templates (see placeholder `YOUR_SSH_KEY` in samples)
-1. Bootstrap and run your container
-1. `./launcher ssh my_container`
+You can ssh into your container using `./launcher ssh my_container`, we will automatically set up ssh access during bootstrap.
 
 ### Security
 
index 21598afc665a35764caed31de2d479feb433d1ae..3e65448904f2223da030ab5dd554dc99d1e9b4cb 100755 (executable)
--- a/launcher
+++ b/launcher
@@ -62,6 +62,30 @@ prereqs() {
 
 prereqs
 
+get_ssh_pub_key() {
+  if tty -s
+  then
+    if [[ ! -e ~/.ssh/id_rsa.pub ]] ; then
+      echo You have no SSH key associated to this profile
+      echo "(This will allow you ssh access into your container)"
+      read -p "Generate SSH key at ~/.ssh/id_rsa.pub? (y/N) " -n 1 -r
+      if [[ $REPLY =~ ^[Yy]$ ]]
+      then
+        echo
+        echo Generating SSH key
+        (mkdir -p ~/.ssh && cd ~/.ssh && ssh-keygen -f id_rsa -t rsa -N '')
+      else
+        echo
+        echo WARNING: You may not be able to log in to your container.
+        echo
+      fi
+    fi
+  fi
+
+  ssh_pub_key=`cat ~/.ssh/id_rsa.pub`
+}
+
+
 install_docker() {
 
   echo "Docker is not installed, make sure you are running on the 3.8 kernel"
@@ -151,6 +175,9 @@ fi
 
 case "$command" in
   bootstrap)
+
+      get_ssh_pub_key
+
       # Is the image available?
       # If not, pull it here so the user is aware what's happening.
       docker history $image >/dev/null 2>&1 || docker pull $image
@@ -179,6 +206,8 @@ case "$command" in
 
       echo $run_command
 
+      env=("${env[@]}" "-e" "SSH_PUB_KEY=\"$ssh_pub_key\"")
+
       (exec echo "$input" | docker run "${env[@]}" -e DOCKER_HOST_IP=$docker_ip --cidfile $cidbootstrap -i -a stdin -a stdout -a stderr $volumes $image \
          /bin/bash -c "$run_command") \
          || (docker rm `cat $cidbootstrap` && rm $cidbootstrap)
index 92a11f01b7080f9cf17bdcda077686cef6b4d703..ebcdf34c52935267c46fd8afde5df48eb64f79d2 100644 (file)
@@ -11,10 +11,6 @@ expose:
   - "6379:6379"
   - "2221:22"
 
-# ssh key for logging in to container
-params:
-  ssh_key: ""
-
 # amend SOME_SECRET to a password for the discourse user
 hooks:
   after_postgres:
index 562bc1a1527d81eccf3da5718e90a4d8653c7265..76105aec93d7185d77a88f08c7ea11856ee9769c 100644 (file)
@@ -6,10 +6,6 @@ expose:
   - "6379:6379"
   - "2221:22"
 
-hooks:
-#  after_sshd:
-    # - exec: ssh-import-id some-user
-
 volumes:
   - volume:
         host: /var/docker/shared
index f9d5f0370947400d5f057fb3d00ff9c15842adf6..2dae4e787698db268b2f52e8f68a54bb830670b6 100644 (file)
@@ -11,10 +11,6 @@ expose:
   - "2222:22"
 
 params:
-  # ssh key so you can log in, a tip, try using the key for root in ~root/.ssh or generate one
-  # using ssh-keygen. This should be a string containing the key contents. For more information
-  # see Troubleshooting in README
-  ssh_key: YOUR_SSH_KEY
   # git revision to run
   version: HEAD
 
index 61f7998d6aa29de2a3e5c9ebb75e9772dc492768..08fafcb6aaacd741a27d659afb5915611b592fd6 100644 (file)
@@ -10,9 +10,6 @@ expose:
   - "2222:22"
 
 params:
-
-# your ssh key can go here, or you can use ssh-import-id
-  ssh_key: ""
   version: HEAD
 
 # developer emails allow you to fast track account creation on the site
index ac48523584fccaf9ef0f9a7700778e2c5810bcf9..c4ca4f6712bea14b2aa844ca5509b9b2c8f59cdb 100644 (file)
@@ -23,4 +23,5 @@ run:
         - mkdir -p /var/run/sshd
         - mkdir -p /root/.ssh
         - echo "$ssh_key" >> /root/.ssh/authorized_keys
+        - echo "$$ENV_SSH_PUB_KEY" >> /root/.ssh/authorized_keys
         - chmod 640 /root/.ssh/authorized_keys