Do not override the SSH port if standard port 22 is used

Always passing "-p 22" to ssh (or "-P 22" to scp) if no custom port is given on
the command line causes trouble when not using a host name but an SSH session
name (as defined in .ssh/config) which defines a non-standard port, because the
port given on the command line overrides that port.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
This commit is contained in:
Sebastian Schuberth 2010-04-16 09:19:07 +02:00 committed by Sitaram Chamarty
parent 2a776e56ad
commit 8b31956c32

View file

@ -48,7 +48,7 @@ main() {
[[ $upgrade == 0 ]] && initial_conf_key [[ $upgrade == 0 ]] && initial_conf_key
# MANUAL: cd to $GL_ADMINDIR and run "src/gl-compile-conf" # MANUAL: cd to $GL_ADMINDIR and run "src/gl-compile-conf"
ssh -p $port $user@$host "cd $GL_ADMINDIR; \$PWD/src/gl-compile-conf $quiet" ssh $p_port $user@$host "cd $GL_ADMINDIR; \$PWD/src/gl-compile-conf $quiet"
setup_pta setup_pta
@ -183,7 +183,8 @@ basic_sanity() {
# That is, running "ssh git@server" should log in straight away, without # That is, running "ssh git@server" should log in straight away, without
# asking for a password # asking for a password
ssh -p $port -o PasswordAuthentication=no $user@$host true || [[ $port -ne 22 ]] && p_port="-p $port"
ssh $p_port -o PasswordAuthentication=no $user@$host true ||
die "pubkey access didn't work; please set it up using 'ssh-copy-id' or something" die "pubkey access didn't work; please set it up using 'ssh-copy-id' or something"
} }
@ -200,7 +201,7 @@ version_info() {
# what was the old version there? # what was the old version there?
export upgrade_details="you are upgrading \ export upgrade_details="you are upgrading \
$(ssh -p $port $user@$host cat gitolite-install/conf/VERSION 2>/dev/null || echo '(or installing first-time)' ) \ $(ssh $p_port $user@$host cat gitolite-install/conf/VERSION 2>/dev/null || echo '(or installing first-time)' ) \
to $(cat conf/VERSION)" to $(cat conf/VERSION)"
prompt "$upgrade_details" "$v_upgrade_details" prompt "$upgrade_details" "$v_upgrade_details"
@ -281,8 +282,8 @@ copy_gl() {
# server, to a directory called (for example) "gitolite-install". You may # server, to a directory called (for example) "gitolite-install". You may
# have to create the directory first. # have to create the directory first.
ssh -p $port $user@$host mkdir -p gitolite-install ssh $p_port $user@$host mkdir -p gitolite-install
scp $quiet -P $port -p -r src conf doc hooks $user@$host:gitolite-install/ scp $quiet ${p_port/p/P} -p -r src conf doc hooks $user@$host:gitolite-install/
# MANUAL: now log on to the server (ssh git@server) and get a command # MANUAL: now log on to the server (ssh git@server) and get a command
# line. This step is for your convenience; the script does it all from # line. This step is for your convenience; the script does it all from
@ -296,7 +297,7 @@ copy_gl() {
prompt "finding/creating gitolite rc..." "$v_edit_glrc" prompt "finding/creating gitolite rc..." "$v_edit_glrc"
# lets try and get the file from there first # lets try and get the file from there first
if scp -P $port $user@$host:.gitolite.rc $tmpgli &>/dev/null if scp ${p_port/p/P} $user@$host:.gitolite.rc $tmpgli &>/dev/null
then then
prompt " ...trying to reuse existing rc" \ prompt " ...trying to reuse existing rc" \
"Oh hey... you already had a '.gitolite.rc' file on the server. "Oh hey... you already had a '.gitolite.rc' file on the server.
@ -329,7 +330,7 @@ Let's see if we can use that instead of the default one..."
fi fi
# copy the rc across # copy the rc across
scp $quiet -P $port $tmpgli/.gitolite.rc $user@$host: scp $quiet ${p_port/p/P} $tmpgli/.gitolite.rc $user@$host:
} }
run_install() { run_install() {
@ -337,18 +338,18 @@ run_install() {
prompt "installing/upgrading..." "$v_ignore_stuff" prompt "installing/upgrading..." "$v_ignore_stuff"
# extract the GL_ADMINDIR, REPO_BASE and GIT_PATH locations # extract the GL_ADMINDIR, REPO_BASE and GIT_PATH locations
GL_ADMINDIR=$(ssh -p $port $user@$host "perl -e 'do \".gitolite.rc\"; print \$GL_ADMINDIR'") GL_ADMINDIR=$(ssh $p_port $user@$host "perl -e 'do \".gitolite.rc\"; print \$GL_ADMINDIR'")
REPO_BASE=$( ssh -p $port $user@$host "perl -e 'do \".gitolite.rc\"; print \$REPO_BASE'") REPO_BASE=$( ssh $p_port $user@$host "perl -e 'do \".gitolite.rc\"; print \$REPO_BASE'")
GIT_PATH=$( ssh -p $port $user@$host "perl -e 'do \".gitolite.rc\"; print \$GIT_PATH'") GIT_PATH=$( ssh $p_port $user@$host "perl -e 'do \".gitolite.rc\"; print \$GIT_PATH'")
# determine if this is an upgrade; we decide based on whether a file # determine if this is an upgrade; we decide based on whether a file
# called $GL_ADMINDIR/conf/gitolite.conf exists on the remote side. We # called $GL_ADMINDIR/conf/gitolite.conf exists on the remote side. We
# can't do this till we know the correct value for GL_ADMINDIR # can't do this till we know the correct value for GL_ADMINDIR
upgrade=0 upgrade=0
if ssh -p $port $user@$host cat $GL_ADMINDIR/conf/gitolite.conf &> /dev/null if ssh $p_port $user@$host cat $GL_ADMINDIR/conf/gitolite.conf &> /dev/null
then then
upgrade=1 upgrade=1
ssh -p $port $user@$host cat $GL_ADMINDIR/conf/gitolite.conf 2> /dev/null | grep '@SHELL' && ssh $p_port $user@$host cat $GL_ADMINDIR/conf/gitolite.conf 2> /dev/null | grep '@SHELL' &&
prompt "" "$v_at_shell_bwi" prompt "" "$v_at_shell_bwi"
[[ -n $admin_name ]] && echo -e "\n *** WARNING ***: looks like an upgrade... ignoring argument '$admin_name'" [[ -n $admin_name ]] && echo -e "\n *** WARNING ***: looks like an upgrade... ignoring argument '$admin_name'"
else else
@ -358,7 +359,7 @@ run_install() {
# MANUAL: still in the "gitolite-install" directory? Good. Run # MANUAL: still in the "gitolite-install" directory? Good. Run
# "src/gl-install" # "src/gl-install"
ssh -p $port $user@$host "cd gitolite-install; src/gl-install $quiet" ssh $p_port $user@$host "cd gitolite-install; src/gl-install $quiet"
# MANUAL: if you're upgrading, run "src/gl-compile-conf" and you're done! # MANUAL: if you're upgrading, run "src/gl-compile-conf" and you're done!
# -- ignore the rest of this file for the purposes of an upgrade # -- ignore the rest of this file for the purposes of an upgrade
@ -388,8 +389,8 @@ repo testing
" > $tmpgli/gitolite.conf " > $tmpgli/gitolite.conf
# send the config and the key to the remote # send the config and the key to the remote
scp $quiet -P $port $tmpgli/gitolite.conf $user@$host:$GL_ADMINDIR/conf/ scp $quiet ${p_port/p/P} $tmpgli/gitolite.conf $user@$host:$GL_ADMINDIR/conf/
scp $quiet -P $port "$HOME/.ssh/$admin_name.pub" $user@$host:$GL_ADMINDIR/keydir scp $quiet ${p_port/p/P} "$HOME/.ssh/$admin_name.pub" $user@$host:$GL_ADMINDIR/keydir
} }
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
@ -413,13 +414,13 @@ setup_pta() {
PATH=\$PATH:$GIT_PATH PATH=\$PATH:$GIT_PATH
GIT_WORK_TREE=$GL_ADMINDIR git add conf/gitolite.conf keydir GIT_WORK_TREE=$GL_ADMINDIR git add conf/gitolite.conf keydir
GIT_WORK_TREE=$GL_ADMINDIR git diff --cached --quiet 2>/dev/null || GIT_WORK_TREE=$GL_ADMINDIR git commit -am start GIT_WORK_TREE=$GL_ADMINDIR git diff --cached --quiet 2>/dev/null || GIT_WORK_TREE=$GL_ADMINDIR git commit -am start
" | ssh -p $port $user@$host " | ssh $p_port $user@$host
# MANUAL: now that the admin repo is created, you have to set the hooks # MANUAL: now that the admin repo is created, you have to set the hooks
# properly. The install program does this. So cd back to the # properly. The install program does this. So cd back to the
# "gitolite-install" directory and run "src/gl-install" # "gitolite-install" directory and run "src/gl-install"
ssh -p $port $user@$host "cd gitolite-install; src/gl-install $quiet" ssh $p_port $user@$host "cd gitolite-install; src/gl-install $quiet"
# MANUAL: you're done! Log out of the server, come back to your # MANUAL: you're done! Log out of the server, come back to your
# workstation, and clone the admin repo using "git clone # workstation, and clone the admin repo using "git clone