Improved the SSH error handling.
This commit is contained in:
+33
-25
@@ -110,6 +110,30 @@ hierarchy_preparation() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setup_ssh() {
|
setup_ssh() {
|
||||||
|
edit_var() {
|
||||||
|
EXIT_CODE=${1}
|
||||||
|
if [[ EXIT_CODE -eq 225 ]]; then
|
||||||
|
echo -e "\n ❌ Invalid password for ${TARGET_USER}@${LIVE_TARGET_IP}."
|
||||||
|
elif [[ EXIT_CODE -eq 226 ]]; then
|
||||||
|
echo -e "\n ❌ The IP address you specified cannot be reached."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e " Please check the credentials provided in the configuration."
|
||||||
|
echo -e "\n Here are the current settings :
|
||||||
|
Target IP address : $(gum style --italic \"${LIVE_TARGET_IP}\")
|
||||||
|
Target password : $(gum style --italic \"${LIVE_TARGET_PASSWORD}\")"
|
||||||
|
gum confirm "Are these correct ?" || {
|
||||||
|
get_valid_input "LIVE_TARGET_IP" "\n ➡️ Provide the IP address of your machine in a NixOS live environment :" "192.168.1.100" "IP_REGEX";
|
||||||
|
get_valid_input "LIVE_TARGET_IP" "\n ➡️ Provide the password of your machine in a NixOS live environment :" "password" "IP_REGEX" "true" "true";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
gum confirm "Retry connection ?" || {
|
||||||
|
echo -e "\n ❌ Host unreachable or connection refused.";
|
||||||
|
exit 226;
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
echod "\n ➡️ Generating new SSH key for numbus-admin..."
|
echod "\n ➡️ Generating new SSH key for numbus-admin..."
|
||||||
|
|
||||||
chmod 700 "${TMP_EXTRA_PATH}/home/numbus-admin/.ssh/"
|
chmod 700 "${TMP_EXTRA_PATH}/home/numbus-admin/.ssh/"
|
||||||
@@ -120,15 +144,14 @@ setup_ssh() {
|
|||||||
while true; do
|
while true; do
|
||||||
if sshpass -p "${LIVE_TARGET_PASSWORD}" ssh-copy-id -o StrictHostKeyChecking=no -o ConnectTimeout=10 -i "${TMP_EXTRA_PATH}/home/numbus-admin/.ssh/id_ed25519" "${TARGET_USER}@${LIVE_TARGET_IP}" >> "${STDOUT}" 2>> "${STDERR}"; then
|
if sshpass -p "${LIVE_TARGET_PASSWORD}" ssh-copy-id -o StrictHostKeyChecking=no -o ConnectTimeout=10 -i "${TMP_EXTRA_PATH}/home/numbus-admin/.ssh/id_ed25519" "${TARGET_USER}@${LIVE_TARGET_IP}" >> "${STDOUT}" 2>> "${STDERR}"; then
|
||||||
echod "\n ✅ SSH key copied successfully"
|
echod "\n ✅ SSH key copied successfully"
|
||||||
break
|
return 0
|
||||||
else
|
else
|
||||||
local EXIT_CODE=$?
|
local EXIT_CODE=$?
|
||||||
if [[ ${EXIT_CODE} -eq 5 ]]; then
|
if [[ ${EXIT_CODE} -eq 5 ]]; then
|
||||||
echo -e "\n ❌ Invalid password for ${TARGET_USER}@${LIVE_TARGET_IP}. Please check the credentials provided in the configuration."
|
edit_var "225"
|
||||||
exit 225
|
elif ! ping -c 2 "${LIVE_TARGET_IP}" >> "${STDOUT}" 2>> "${STDERR}"; then
|
||||||
fi
|
edit_var "226"
|
||||||
|
elif ssh-keygen -F "${LIVE_TARGET_IP}" >> "${STDOUT}" 2>> "${STDERR}"; then
|
||||||
if ssh-keygen -F "${LIVE_TARGET_IP}" >> "${STDOUT}" 2>> "${STDERR}"; then
|
|
||||||
echo -e "\n ⚠️ The SSH fingerprint for the selected IP address $(gum style --italic "\"${LIVE_TARGET_IP}\"") is not the same as the one in $(gum style --italic "\".ssh/known_hosts\"").
|
echo -e "\n ⚠️ The SSH fingerprint for the selected IP address $(gum style --italic "\"${LIVE_TARGET_IP}\"") is not the same as the one in $(gum style --italic "\".ssh/known_hosts\"").
|
||||||
|
|
||||||
This could occur for multiple reasons :
|
This could occur for multiple reasons :
|
||||||
@@ -140,27 +163,12 @@ setup_ssh() {
|
|||||||
The script $(gum style --bold "cannot continue") without the correct fingerprint installed.
|
The script $(gum style --bold "cannot continue") without the correct fingerprint installed.
|
||||||
If you are unsure, it is always better to check manually.\n"
|
If you are unsure, it is always better to check manually.\n"
|
||||||
|
|
||||||
gum confirm "Remove the old fingerprint and accept the new one ?" || { echo -e "\n\n ❌ SSH fingerprints don't match."; exit 22; }
|
gum confirm "Remove the old fingerprint and accept the new one ?" || {
|
||||||
|
echo -e "\n ❌ SSH fingerprints don't match.";
|
||||||
|
exit 22;
|
||||||
|
}
|
||||||
ssh-keygen -R "${LIVE_TARGET_IP}" >> "${STDOUT}" 2>> "${STDERR}"
|
ssh-keygen -R "${LIVE_TARGET_IP}" >> "${STDOUT}" 2>> "${STDERR}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while true; do
|
|
||||||
if ! ping -c 2 "${LIVE_TARGET_IP}" >> "${STDOUT}" 2>> "${STDERR}"; then
|
|
||||||
echo -e "\n ❌ The IP address you specified cannot be reached."
|
|
||||||
echo -e "\n Here are the current settings :
|
|
||||||
Target IP address : $(gum style --italic \"${LIVE_TARGET_IP}\")
|
|
||||||
Target password : $(gum style --italic \"${LIVE_TARGET_PASSWORD}\")"
|
|
||||||
gum confirm "Are these correct ?" || {
|
|
||||||
get_valid_input "LIVE_TARGET_IP" "\n ➡️ Provide the IP address of your machine in a NixOS live environment :" "192.168.1.100" "IP_REGEX";
|
|
||||||
get_valid_input "LIVE_TARGET_IP" "\n ➡️ Provide the password of your machine in a NixOS live environment :" "password" "IP_REGEX" "true" "true";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
gum confirm "Retry connection ?" || { echo -e "\n ❌ Host unreachable or connection refused."; exit 226; }
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user