Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/05/2010, à 19:31

chiron

Backuppc et openssh, connexion impossible

Bonsoir,

J'essaie de mettre en place un serveur backuppc en suivant le tuto: http://doc.ubuntu-fr.org/backuppc mais ssh refuse de se connecter.

J'ai deux machines virtuelles lucid lynx 10.04 sous vmware:


backup-server 172.16.47.128
backup1 172.16.47.129

en essayant de me connnecter à backup1 depuis le serveur j'obtiens systématiquement une demande de mot de passe et un accès refusé. J'ai essayé de rajouter ALL: 172.16.47. dans hosts.allow sur backup1, pas d'effet.

Quelqun a une idée? smile


In hoc signo vinces.

Hors ligne

#2 Le 31/05/2010, à 23:16

chiron

Re : Backuppc et openssh, connexion impossible

J'essaie de me dépatouiller...
sur backup1 un ssh root@localhost me donne la même chose, un comble! roll
Bref, je suis coincé, si une bonne âme passe par là... smile


In hoc signo vinces.

Hors ligne

#3 Le 31/05/2010, à 23:38

kyncani

Re : Backuppc et openssh, connexion impossible

J'avais commencé un petit script pour faire cela. Mais je ne sais pas si il marchera dans ton cas (il a fonctionné chez moi).
Si tu te sens un petit peu aventureux, copie le script quelque part sur le serveur backuppc et lance-le avec "bash /nom/du/fichier/script backuppc@localhost root@backup1".
Ca va autoriser l'accès par clé privée/clé publique depuis le compte backuppc du serveur backuppc vers le compte root de la machine à sauvegarder.
Fait un copier/coller de _l'ensemble_ des messages qui sont affichés.

Pour vérifier si sa fonctionne, depuis le serveur backuppc, devient root avec "sudo -i", puis prend l'identité de backuppc avec "su - backuppc". Ensuite, la commande suivante devrait fonctionner sans demander de mot de passe :
ssh root@backup1 echo success

#! /usr/bin/env bash

#####################################################################

## Online help
usage() {
	cat <<EOU
NAME
	$prog - Enable passwordless authentication

USAGE
	$prog SRCUSER[@SRCHOST] DSTUSER[@DSTHOST]

OPTIONS
	--debug
		Activate debugging mode

	--dstsshuser
		Try to connect to DSTHOST using given user

	-h, --help
		Show help

	--srcsshuser
		Try to connect to SRCHOST using given user

	--step2
	--step3
		Reserved internal options, do not use

DESCRIPTION
	$prog enable passwordless authentication from SRCUSER to DSTUSER.
	if SRCHOST or DSTHOST is ommited, localhost is assumed.

VERSION
	1.0.0

AUTHOR
	Yannick Le Saint (kyncani) <y.lesaint@gmail.com>
EOU
}

## Temporary script name that will be user on srcuser@srchost
tmpscript() {
	local safeprog=`echo "$prog" | sed 's/[^A-Za-z0-9_-]//g'`
	test "$safeprog" = "" && safeprog="sshauth"
	echo "$safeprog" | grep -q '^[A-Za-z0-9]' || safeprog="X$safeprog"
	echo "/tmp/$prog-`whoami`-$TMPSCRIPTUSER-$srcuser@$srchost-to-$dstuser@$dsthost"
}

## Return true if we are executing in step2
in_step2() {
	$step2_opt || test "$srcuser" = "`whoami`" -a "$srchost" = "`hostname`"
}

## Make sure ~/.ssh has sane permissions
fixsshperms() {
	local d="$HOME/.ssh"
	test -e "$d" || return 0
	chown -R `id -u`:`id -g` "$d" \
	&& chmod -R go-rwx "$d"
}

## Configure access from $srcuser@$srchost
do_step2() {
	local keyfile="$HOME/.ssh/id_rsa.pub"
	local key=
	local step3key=
	local sshuser=
	echo "`whoami`@`hostname` : looking for ssh key $keyfile"
	test -e "$keyfile" || ssh-keygen -t rsa || return 1
	test -e "$keyfile" || return 1
	fixsshperms || return 1
	key=`cat "$keyfile"`
	step3key=`echo "$key" | sed 's/[[:space:]]/@@@/g'`
	copyscript "$dsthost" "$dstuser" "$dstsshuser" "root" "`whoami`" || return 1
	sshuser="$SSHUSER"
	echo "Starting running as $sshuser@$dsthost"
	ssh -tX "$sshuser@$dsthost" "
		bash `tmpscript` $startupopts --step3=$step3key $srcuser@`hostname` $dstuser@$dsthost || exit 1;
		rm -f `tmpscript` &>/dev/null;
		true;
		" \
	|| return 1
}

## Configure access from $dstuser@$dsthost
do_step3() {
	local f="$HOME/.ssh/authorized_keys"
	local key=`echo "$step3_opt" | sed 's/@@@/ /g'`
	test -e "$HOME/.ssh/" || mkdir "$HOME/.ssh/" || return 1
	fixsshperms || return 1
	test -e "$f" || { touch "$f" && chmod 00600 "$f"; } || return 1
	if grep -qFx "$key" "$f"; then
		echo
		echo "SSH KEY IS ALREADY ENABLED, NOTHING TO DO"
		echo
	else
		echo "$key" >>"$f" || return 1
		echo
		echo "SSH KEY ADDED WITH SUCCESS"
		echo
	fi
}

## Try to connect using ssh, return true if connection was successful
## Send a message about what's going on
## Usage: try_ssh_connect user host
try_ssh_connect() {
	local user="$1"
	local host="$2"
	echo "Trying to connect to $host with $user using ssh"
	ssh -o NumberOfPasswordPrompts=1 "$user@$host" true
}

## Execute a command as root
do_as_root() {
	echo "Let's see if we can become root@`hostname` using sudo"
	if sudo true; then
		echo "Yep, becoming root using sudo on `hostname`"
		if test "$step3_opt" = ""; then
			exec sudo -i -- "$@"
		else
			echo coucou
			exec sudo -i -- "$@" "--step3=$step3_opt"
		fi
	else
		echo "Nope, using su instead"
		if test "$step3_opt" = ""; then
			exec su - root -c "$*"
		else
			exec su - root -c "$* --step3=$step3_opt"
		fi
	fi
}

## Copy currently executing script to a given host
## Usage: copyscript host user1 user2, ...
## export SSHUSER as the username that was used
copyscript() {
	local host="$1"
	local success=false
	local sshuser=
	shift
	while test $# -gt 0; do
		sshuser="$1"
		shift
		if try_ssh_connect "$sshuser" "$host"; then
			success=true
			break
		fi
	done
	if ! $success; then
		echo "$prog: cannot connect to $host using ssh" >&2
		return 1
	fi
	echo "Copying $prog to $sshuser@$host"
	export TMPSCRIPTUSER="$sshuser"
	dst="$sshuser@$host:`tmpscript`"
	if ! scp "$0" "$dst"; then
		echo "$prog: cannot copy $0 to $dst" >&2
		exit 1
	fi
	export SSHUSER="$sshuser"
	true
}

## Return fully qualified program file
fqprog() {
	if echo "$0" | grep -q "^/"; then
		echo "$0"
	else
		echo "`pwd`/$0"
	fi
}

#####################################################################

## Program name
prog=`basename "$0"`

## Step2 is where we are executing as $srcuser@$srchost
step2_opt=false

## Step3 is where we are executing on $dsthost, $step3_opt
## will contain our new key
step3_opt=

## Debug mode
debug=false

## Original command line
startupcmd="$*"

## Current options
startupopts=

## Added so that script copied using different accounts don't use the
## same filename, which caused permission error.
export TMPSCRIPTUSER=

srcuser=
srchost=localhost
srcsshuser=`whoami`
dstuser=
dsthost=localhost
dstsshuser=`whoami`

#####################################################################

echo "STARTING RUNNING : `whoami`@`hostname`:`pwd` : $0 $*"

while test $# -gt 0; do
	case "$1" in
	--dstsshuser)
		test $# -gt 1 || { echo "$prog: $1 is expecting a value" >&2; exit 1; }
		shift
		dstsshuser="$1"
		;;
	--dstsshuser=*) dstsshuser=`echo "$1" | sed 's/^[^=]*=//'`;;
	--debug) { debug=true; set -x; };;
	-h|--help) { usage && exit || exit 1; };;
	--srcsshuser)
		test $# -gt 1 || { echo "$prog: $1 is expecting a value" >&2; exit 1; }
		shift
		srcsshuser="$1"
		;;
	--srcsshuser=*) srcsshuser=`echo "$1" | sed 's/^[^=]*=//'`;;
	--step2) step2_opt=true;;
	--step3=*) step3_opt=`echo "$1" | sed 's/^[^=]*=//'`;;
	-*) { echo "$prog: unknown option $1" >&2; exit 1; };;
	*)
		if test "$srcuser" = ""; then
			srcuser="$1"
		elif test "$dstuser" = ""; then
			dstuser="$1"
		else
			echo "$prog: too many arguments given ($1)" >&2
			exit 1
		fi
		;;
	esac
	shift
done

if test "$dstuser" = ""; then
	echo "$prog: Usage: $prog SRCUSER DSTUSER" >&2
	exit 1
fi

if echo "$srcuser" | grep -q "@"; then
	srchost=`echo "$srcuser" | sed 's/.*@//'`
	srcuser=`echo "$srcuser" | sed 's/@[^@]*$//'`
fi
if echo "$dstuser" | grep -q "@"; then
	dsthost=`echo "$dstuser" | sed 's/.*@//'`
	dstuser=`echo "$dstuser" | sed 's/@[^@]*$//'`
fi

startupopts=""
$debug && startupopts="$startupopts --debug"
test "$srcsshuser" = "" || startupopts="$startupopts --srcsshuser=$srcsshuser"
test "$dstsshuser" = "" || startupopts="$startupopts --dstsshuser=$dstsshuser"

#####################################################################

if test "$step3_opt" != ""; then
	if test "`whoami`" = "$dstuser"; then
		do_step3 && exit
	elif test `id -u` -eq 0; then
		cp "$0" "`tmpscript`" || exit 1
		chmod a+rx "`tmpscript`" || exit 1
		su - "$dstuser" -c "`tmpscript` --step3=$step3_opt $startupopts $srcuser@$srchost $dstuser@$dsthost"
	else
		do_as_root bash "`fqprog`" $startupcmd && exit
	fi
	exit 1
fi

if in_step2; then
	if test "`whoami`" = "$srcuser"; then
		do_step2 && exit
	elif test `id -u` -eq 0; then
		cp "$0" "`tmpscript`" || exit 1
		chmod a+rx "`tmpscript`" || exit 1
		exec su - "$srcuser" -c "`tmpscript` $startupcmd"
	else
		do_as_root "$0" $startupcmd && exit
	fi
	exit 1
fi

if test "$srchost" = "localhost" -o "$srchost" = "`hostname`"; then
	if test `id -u` -ne 0; then
		do_as_root "`fqprog`" $startupopts $startupcmd && exit
		exit 1
	fi
	echo "Copying $prog to `tmpscript`"
	if ! cp "$0" "`tmpscript`"; then
		echo "$prog: cannot copy $0 to `tmpscript`" >&2
		exit 1
	fi
	if ! chmod a+rx "`tmpscript`"; then
		echo "$prog: canno set `tmpscript` a+rx" >&2
		exit 1
	fi
	echo "Starting $prog as $srcuser"
	su - "$srcuser" -c "`tmpscript` $startupopts --step2 $srcuser@$srchost $dstuser@$dsthost" \
	|| exit 1
	rm -f "`tmpscript`" &>/dev/null
	exit 0
else
	copyscript "$srchost" "$srcuser" "$srcsshuser" "root" "`whoami`" || exit 1
	sshuser="$SSHUSER"
	echo "Connecting to $srchost as $sshuser"
	ssh -tX "$sshuser@$srchost" "
		bash `tmpscript` $startupopts --step2 $srcuser@localhost $dstuser@$dsthost || exit 1;
		rm -f `tmpscript` &>/dev/null;
		true;
		" \
	|| exit 1
fi

true

#####################################################################

Hors ligne

#4 Le 01/06/2010, à 21:49

chiron

Re : Backuppc et openssh, connexion impossible

Un GRAND merci.

J'ai du rajouter backup1 et son ip dans le /etc/hosts de backup-server, sinon il n'arrive pas à le trouver
Voilà ce que ça donne:

jyl@backup-server:~/Bureau$ bash script backuppc@localhost root@backup1
STARTING RUNNING : jyl@backup-server:/home/jyl/Bureau : script backuppc@localhost root@backup1
Let's see if we can become root@backup-server using sudo
Yep, becoming root using sudo on backup-server
STARTING RUNNING : root@backup-server:/root : /home/jyl/Bureau/script --srcsshuser=jyl --dstsshuser=jyl backuppc@localhost root@backup1
Copying script to /tmp/script-root--backuppc@localhost-to-root@backup1
Starting script as backuppc
STARTING RUNNING : backuppc@backup-server:/var/lib/backuppc : /tmp/script-root--backuppc@localhost-to-root@backup1 --srcsshuser=jyl --dstsshuser=jyl --step2 backuppc@localhost root@backup1
backuppc@backup-server : looking for ssh key /var/lib/backuppc/.ssh/id_rsa.pub
Trying to connect to backup1 with root using ssh
The authenticity of host 'backup1 (172.16.47.129)' can't be established.
RSA key fingerprint is 7a:04:9d:3a:4d:0b:ce:3c:6b:6e:4f:20:6c:ab:94:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'backup1' (RSA) to the list of known hosts.
root@backup1's password: 
Permission denied (publickey,password).
Trying to connect to backup1 with jyl using ssh
jyl@backup1's password: 
Copying script-root--backuppc@localhost-to-root@backup1 to jyl@backup1
jyl@backup1's password: 
script-root--backuppc@localhost-to-root@backu 100% 8810     8.6KB/s   00:00    
Starting running as jyl@backup1
jyl@backup1's password: 
Warning: No xauth data; using fake authentication data for X11 forwarding.
/usr/bin/X11/xauth:  creating new authority file /home/jyl/.Xauthority
STARTING RUNNING : jyl@backup1:/home/jyl : /tmp/script-root--backuppc@localhost-to-root@backup1-backuppc-jyl-backuppc@localhost-to-root@backup1 --srcsshuser=jyl --dstsshuser=jyl --step3=ssh-rsa@@@AAAAB3NzaC1yc2EAAAABIwAAAQEA9F7N6Yj/nGVKwHk4We3/WQ9JkjRGwPUfCgvrFBB1VcN/AFepc2wQo3qXaMjsZnNjisb2ijrIv4mGI5tmwxeUPrtOgws+x/8PbUv5627Y3ykNdZAOvMNXHE2+jUr5linz1PiuCc2cdj5ojcJ+fFouLTuNtzEnlcnbDH0sRFLJaLpuN90W9bNAZRGUuJb1jqgHHQw+He+5vtk4Nb8lV+DdQlBqabhnABbmawGIN2xIfr2RCwmgNpOfFt3Cuwo7IpUropB7syX+EdegkMwF6uMv5KOr4ghWNmq885VLJ0pjSr2hUZ3tJ6K5gFWDo2jdHQ6R7HzMKcGIDb6gwekyhHb1IQ==@@@backuppc@backup-server backuppc@backup-server root@backup1
Let's see if we can become root@backup1 using sudo
[sudo] password for jyl: 
Yep, becoming root using sudo on backup1
coucou
STARTING RUNNING : root@backup1:/root : /tmp/script-root--backuppc@localhost-to-root@backup1-backuppc-jyl-backuppc@localhost-to-root@backup1 --srcsshuser=jyl --dstsshuser=jyl --step3=ssh-rsa@@@AAAAB3NzaC1yc2EAAAABIwAAAQEA9F7N6Yj/nGVKwHk4We3/WQ9JkjRGwPUfCgvrFBB1VcN/AFepc2wQo3qXaMjsZnNjisb2ijrIv4mGI5tmwxeUPrtOgws+x/8PbUv5627Y3ykNdZAOvMNXHE2+jUr5linz1PiuCc2cdj5ojcJ+fFouLTuNtzEnlcnbDH0sRFLJaLpuN90W9bNAZRGUuJb1jqgHHQw+He+5vtk4Nb8lV+DdQlBqabhnABbmawGIN2xIfr2RCwmgNpOfFt3Cuwo7IpUropB7syX+EdegkMwF6uMv5KOr4ghWNmq885VLJ0pjSr2hUZ3tJ6K5gFWDo2jdHQ6R7HzMKcGIDb6gwekyhHb1IQ==@@@backuppc@backup-server backuppc@backup-server root@backup1 --step3=ssh-rsa@@@AAAAB3NzaC1yc2EAAAABIwAAAQEA9F7N6Yj/nGVKwHk4We3/WQ9JkjRGwPUfCgvrFBB1VcN/AFepc2wQo3qXaMjsZnNjisb2ijrIv4mGI5tmwxeUPrtOgws+x/8PbUv5627Y3ykNdZAOvMNXHE2+jUr5linz1PiuCc2cdj5ojcJ+fFouLTuNtzEnlcnbDH0sRFLJaLpuN90W9bNAZRGUuJb1jqgHHQw+He+5vtk4Nb8lV+DdQlBqabhnABbmawGIN2xIfr2RCwmgNpOfFt3Cuwo7IpUropB7syX+EdegkMwF6uMv5KOr4ghWNmq885VLJ0pjSr2hUZ3tJ6K5gFWDo2jdHQ6R7HzMKcGIDb6gwekyhHb1IQ==@@@backuppc@backup-server

SSH KEY ADDED WITH SUCCESS

In hoc signo vinces.

Hors ligne

#5 Le 01/06/2010, à 22:25

kyncani

Re : Backuppc et openssh, connexion impossible

Ok smile
Bon ben si tu as vérifié que ça fonctionne correctement comme j'ai dis
---
Pour vérifier si sa fonctionne, depuis le serveur backuppc, devient root avec "sudo -i", puis prend l'identité de backuppc avec "su - backuppc". Ensuite, la commande suivante devrait fonctionner sans demander de mot de passe :
ssh root@backup1 echo success
---
L'accès ssh root est prêt pour backuppc smile

Et je ne me rappelais plus que le script demandait autant de fois des mots de passe, mais on ne peut pas véritablement faire autrement.

Hors ligne

#6 Le 01/06/2010, à 22:57

chiron

Re : Backuppc et openssh, connexion impossible

Ca fonctionne bien, aucun mot de passe n'est demandé pour ssh root@backup1 echo success smile

Si je comprends bien, en lisant le log il faut lancer le script pour chaque machine à sauvegarder, et l'utilisateur jyl doit exister sur chaque machine. Exact?
Super boulot! smile


In hoc signo vinces.

Hors ligne

#7 Le 01/06/2010, à 23:41

kyncani

Re : Backuppc et openssh, connexion impossible

Ok, donc ça fonctionne smile
Le script sert à mettre en place un accès ssh sans mot de passe d'un compte à un autre.
Ici de backuppc@serveurBackuppc vers root@clientBackuppc
Effectivement, il faut configurer un accès par machine. Donc lancer ce script pour chaque client.
Il faut un premier compte qui sert de point d'entrée sur la machine distante. Si root ne fonctionne pas (par exemple, sur ubuntu, root existe mais n'a pas de mot de passe),  il essaie le nom du compte qui a servi a lancer le script (ici jyl).
Tu peux spécifier le nom du compte distant à utiliser avec l'option --dstsshuser

Hors ligne