diff options
-rwxr-xr-x | passh | 9 | ||||
-rwxr-xr-x | ssf | 8 |
2 files changed, 13 insertions, 4 deletions
@@ -13,17 +13,22 @@ rm "$pipe" # remove file echo -n "Trying to get password from 'pass'... " if pass show "${PASS_PREFIX}$host" 2> /dev/null >&3; then echo "FOUND ('${PASS_PREFIX}$host'). Connecting..." - exec sshpass -d3 ssh -o StrictHostKeyChecking=accept-new $@ + set -x + exec sshpass -d3 ssh -v -o StrictHostKeyChecking=accept-new $@ else echo "not found. Trying pubkeys..." - ssh -o NumberOfPasswordPrompts=0 -o StrictHostKeyChecking=accept-new $@ + set -x + ssh -o NumberOfPasswordPrompts=0 -v -o StrictHostKeyChecking=accept-new $@ ok=$? + set +x if [ "$ok" -ne 0 ]; then read -rp "Connection via pubkey failed, password? " passphrase echo "$passphrase" >&3 echo "Connecting with passphrase..." + set -x sshpass -d3 ssh -o StrictHostKeyChecking=accept-new $@ ok=$? + set +x if [ "$ok" -eq 0 ]; then echo "It worked! Storing password..." echo "$passphrase" | pass insert -e "${PASS_PREFIX}$host" @@ -29,7 +29,11 @@ foreach my $cfgfile (glob "$ENV{HOME}/.ssh/config.d/*") { } next unless defined $key; if ($key eq 'Host') { - @line_hosts = map { { _pat => $_ } } (split /\s/, $value); + if ($value =~ /"/) { + @line_hosts = ({ _pat => $value }); + } else { + @line_hosts = map { { _pat => $_ } } (split /\s/, $value); + } push @hosts, @line_hosts; } elsif ($key eq 'Match') { @line_hosts = (); @@ -82,5 +86,5 @@ if (exists $ENV{TMUX}) { system 'passh', $hostname, '-t', "sh -c \"tmux new -As $remote_session_name\""; `tmux rename-window '[$hostname]'`; } else { - exec 'passh', $hostname, '-t', "sh -c \"tmux new -As $remote_session_name\""; + exec 'passh', $hostname; } |