summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--geo-replication/src/peer_add_secret_pub.in41
1 files changed, 32 insertions, 9 deletions
diff --git a/geo-replication/src/peer_add_secret_pub.in b/geo-replication/src/peer_add_secret_pub.in
index 5a9fd9ac347..a297dd09754 100644
--- a/geo-replication/src/peer_add_secret_pub.in
+++ b/geo-replication/src/peer_add_secret_pub.in
@@ -26,16 +26,39 @@ if [ "$home_dir" == "" ]; then
exit 1;
fi
-if [ ! -d $home_dir/.ssh ]; then
- mkdir $home_dir/.ssh;
- chmod 700 $home_dir/.ssh;
- chown $user: $home_dir/.ssh;
+authorized_keys_file=$(cat /etc/ssh/sshd_config | \
+ grep -e "^AuthorizedKeysFile" | \
+ awk '{print $2}' | tail -1);
+
+# If not set, use default location
+if [ "x$authorized_keys_file" == "x" ]; then
+ authorized_keys_file="%h/.ssh/authorized_keys"
+fi
+
+# If default location
+if [ "$authorized_keys_file" == ".ssh/authorized_keys" ]; then
+ authorized_keys_file="%h/$authorized_keys_file"
+fi
+
+# Replace %u with user name (ex: /etc/ssh/keys/%u/authorized_keys)
+authorized_keys_file="${authorized_keys_file//%u/$user}";
+
+# Replace %h with home dir (ex: %h/.ssh/authorized_keys)
+authorized_keys_file="${authorized_keys_file//%h/$home_dir}";
+ssh_dir=$(dirname $authorized_keys_file);
+
+if [ ! -d $ssh_dir ]; then
+ mkdir $ssh_dir;
+ chmod 700 $ssh_dir;
+ chown $user: $ssh_dir;
fi
-if [ ! -d $home_dir/.ssh/authorized_keys ]; then
- touch $home_dir/.ssh/authorized_keys;
- chmod 600 $home_dir/.ssh/authorized_keys;
- chown $user: $home_dir/.ssh/authorized_keys;
+if [ ! -d $authorized_keys_file ]; then
+ touch $authorized_keys_file;
+ chmod 600 $authorized_keys_file;
+ chown $user: $authorized_keys_file;
fi
-cat "$GLUSTERD_WORKDIR"/geo-replication/${mastervol}_${slavevol}_common_secret.pem.pub >> $home_dir/.ssh/authorized_keys;
+pub_file=${mastervol}_${slavevol}_common_secret.pem.pub
+cat "$GLUSTERD_WORKDIR"/geo-replication/$pub_file >> \
+ $authorized_keys_file;