From 657abafbddd38682e45b2071e283beb14ce64cd8 Mon Sep 17 00:00:00 2001 From: Ilya Shakhat Date: Thu, 8 Sep 2016 16:05:22 +0300 Subject: [PATCH] Fix Fuel key distribution script Couple of things: * ssh-copy-id refuses to copy keys over the hop when the destination is already reachable via its own (different) key * accept Fuel host and user as parameters Change-Id: I9557021c20dbfeeb97059179ccd1bd1879663076 --- examples/fuel_distribute_key.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/examples/fuel_distribute_key.sh b/examples/fuel_distribute_key.sh index 5e16a0a..38c44f2 100755 --- a/examples/fuel_distribute_key.sh +++ b/examples/fuel_distribute_key.sh @@ -1,14 +1,15 @@ #!/bin/bash -x KEY_FILE_NAME="${HOME}/.ssh/os_faults" -USERNAME="root" -HOST="172.18.171.149" +HOST=${1:-fuel.local} +USERNAME=${2:-root} -echo "removing old key if exist" -rm ${KEY_FILE_NAME} | true +echo "distributing keys to Fuel: ${USERNAME}@${HOST}" -echo "generating new key in ${KEY_FILE_NAME}" -ssh-keygen -b 4096 -f ${KEY_FILE_NAME} -q -t rsa -P "" +if [ ! -f ${KEY_FILE_NAME} ]; then + echo "generating new key in ${KEY_FILE_NAME}" + ssh-keygen -b 4096 -f ${KEY_FILE_NAME} -q -t rsa -P "" +fi echo "copying the key to master node ${USERNAME}@${HOST}" ssh-copy-id -i ${KEY_FILE_NAME} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${USERNAME}@${HOST} @@ -17,7 +18,7 @@ echo "get list of nodes in the cluster" for NODE in `ssh -i ${KEY_FILE_NAME} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${USERNAME}@${HOST} fuel2 node list -c ip -f value`; do echo "copying the key to node ${NODE}" - ssh-copy-id -i ${KEY_FILE_NAME} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ProxyCommand="ssh -W %h:%p ${USERNAME}@${HOST}" root@${NODE} - ssh -i ${KEY_FILE_NAME} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ProxyCommand="ssh -W %h:%p ${USERNAME}@${HOST}" root@${NODE} hostname + # ssh-copy-id does not copy the key over the hop when the destination is already reachable via its own key + cat ${KEY_FILE_NAME}.pub | ssh -i ${KEY_FILE_NAME} ${USERNAME}@${HOST} ssh ${NODE} 'tee -a .ssh/authorized_keys' + ssh -i ${KEY_FILE_NAME} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ProxyCommand="ssh -i ${KEY_FILE_NAME} -W %h:%p ${USERNAME}@${HOST}" root@${NODE} hostname done -