From d16d8c94ac0c88f587beb62d79705ca84f9a61cc Mon Sep 17 00:00:00 2001 From: Hans Goor Date: Sat, 23 Nov 2024 17:50:32 +0100 Subject: [PATCH] Auto setup the SSH connection if the devcontainer has not been initialised. --- stowers/shell-utils/dot-local/bin/devc-ssh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/stowers/shell-utils/dot-local/bin/devc-ssh b/stowers/shell-utils/dot-local/bin/devc-ssh index 6f38efd..20be158 100755 --- a/stowers/shell-utils/dot-local/bin/devc-ssh +++ b/stowers/shell-utils/dot-local/bin/devc-ssh @@ -21,7 +21,23 @@ if ! ssh_port="$(${CONTAINER} inspect --format '{{ (index (index .NetworkSetting exit 1 fi -ssh -o UserKnownHostsFile=/dev/null \ - -o StrictHostKeyChecking=false \ +ignore_hostkey=("-oUserKnownHostsFile=/dev/null" "-oStrictHostKeyChecking=false") + +if ! ssh "${ignore_hostkey[@]}" -oPasswordAuthentication=no -p "${ssh_port}" -T dev@localhost 'exit'; then + docker exec -it "${container_id}" /bin/bash -c 'echo "dev:dev" | chpasswd' + echo "[+] Changed password of container user to 'dev'" + + if command -v sshpass &>/dev/null; then + sshpass -p"dev" ssh-copy-id -p "${ssh_port}" dev@localhost + elif command -v expect &>/dev/null; then + expect -c "spawn $(which ssh-copy-id) -p ${ssh_port} dev@localhost; interact -o -nobuffer -re .*assword.* return; send \"dev\r\n\"; send -- \"\r\"; expect eof;" + else + echo "[?] Could not find application to automatically copy SSH key." + echo " Please enter the password 'dev' manually below." + ssh-copy-id -p "${ssh_port}" dev@localhost + fi +fi + +ssh "${ignore_hostkey[@]}" \ -p "${ssh_port}" \ dev@localhost "$@"