Kaffetrinker
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
Guten Tag Ich versuche mein Ubuntu Server auf einen Qnap zu sicher.
Anhand von https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC/ und https://wiki.ubuntuusers.de/SSH/#Authentifizierung-ueber-Public-Keys Nach dem ich das Skript ausführbar gemacht habe kommt | admin@die Adresse des qnap com's password:
|
was dann aber nicht funktioniert.
Es müsste doch aussehen.
| ssh admin@die Adresse des qnap .com
|
Skript: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 | #!/bin/bash
# Simple backup with rsync
# local-mode, tossh-mode, fromssh-mode
SOURCES=(/root /etc /home /boot )
TARGET="/userver"
# edit or comment with "#"
#LISTPACKAGES=listdebianpackages # local-mode and tossh-mode
MONTHROTATE=monthrotate # use DD instead of YYMMDD
RSYNCCONF=(--delete)
#MOUNTPOINT="/media/daten" # check local mountpoint
MAILREC="......@gmail.com"
SSHUSER="admin"
#FROMSSH="fromssh-server"
TOSSH="die adresse von qnap.com"
SSHPORT=22
### do not edit ###
MOUNT="/bin/mount"; FGREP="/bin/fgrep"; SSH="/usr/bin/ssh"
LN="/bin/ln"; ECHO="/bin/echo"; DATE="/bin/date"; RM="/bin/rm"
DPKG="/usr/bin/dpkg"; AWK="/usr/bin/awk"; MAIL="/usr/bin/mail"
CUT="/usr/bin/cut"; TR="/usr/bin/tr"; RSYNC="/usr/bin/rsync"
LAST="last"; INC="--link-dest=$TARGET/$LAST"
LOG=$0.log
$DATE > $LOG
if [ "${TARGET:${#TARGET}-1:1}" != "/" ]; then
TARGET=$TARGET/
fi
if [ "$LISTPACKAGES" ] && [ -z "$FROMSSH" ]; then
$ECHO "$DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 | $TR '\n' ' '" >> $LOG
$DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 |$TR '\n' ' ' >> $LOG 2>&1
fi
if [ "$MOUNTPOINT" ]; then
MOUNTED=$($MOUNT | $FGREP "$MOUNTPOINT");
fi
if [ -z "$MOUNTPOINT" ] || [ "$MOUNTED" ]; then
if [ -z "$MONTHROTATE" ]; then
TODAY=$($DATE +%y%m%d)
else
TODAY=$($DATE +%d)
fi
if [ "$SSHUSER" ] && [ "$SSHPORT" ]; then
S="$SSH -p $SSHPORT -l $SSHUSER";
fi
for SOURCE in "${SOURCES[@]}"
do
if [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ]; then
$ECHO "$RSYNC -e \"$S\" -avR \"$FROMSSH:$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC" >> $LOG
$RSYNC -e "$S" -avR "$FROMSSH:\"$SOURCE\"" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
if [ "$S" ] && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then
$ECHO "$RSYNC -e \"$S\" -avR \"$SOURCE\" ${RSYNCCONF[@]} \"$TOSSH:$TARGET$TODAY\" $INC " >> $LOG
$RSYNC -e "$S" -avR "$SOURCE" "${RSYNCCONF[@]}" "$TOSSH:\"$TARGET\"$TODAY" $INC >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
if [ -z "$S" ]; then
$ECHO "$RSYNC -avR \"$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC" >> $LOG
$RSYNC -avR "$SOURCE" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
done
if [ "$S" ] && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then
$ECHO "$SSH -p $SSHPORT -l $SSHUSER $TOSSH $LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG
$SSH -p $SSHPORT -l $SSHUSER $TOSSH "$LN -nsf \"$TARGET\"$TODAY \"$TARGET\"$LAST" >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
if ( [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ] ) || ( [ -z "$S" ] ); then
$ECHO "$LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG
$LN -nsf "$TARGET"$TODAY "$TARGET"$LAST >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
else
$ECHO "$MOUNTPOINT not mounted" >> $LOG
ERROR=1
fi
$DATE >> $LOG
if [ -n "$MAILREC" ]; then
if [ $ERROR ];then
$MAIL -s "Error Backup $LOG" $MAILREC < $LOG
else
$MAIL -s "Backup $LOG" $MAILREC < $LOG
fi
fi
|
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4577
Wohnort: Berlin
|
@Kaffetrinker: Wenn Du nach dem Passwort gefragt wirst, dann hat offenbar das hinterlegen des SSH-Schlüssels nicht geklappt. Hast Du denn manuell überprüft ob Du dich ohne Passwort per SSH anmelden kannst?
|
Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
ja es funktioniert er fragt nur nach dem
| Enter passphrase for key '/home/...../.ssh/id_rsa':
|
In der Anleitung Authentifizierung über Public-Keys steht :
Der voreingestellte Dateiname (id_rsa) kann einfach mit der Taste ⏎ bestätigt werden, außer man möchte sich ein weiteres Schlüsselpaar erzeugen. Von der Benutzung einer leeren Passphrase ist jedoch abzuraten, weil sonst jeder, der evtl. in den Besitz dieser Datei kommt, sofortigen Zugriff auf alle zugehörigen Systeme erhält.
Das ist doch normal oder ?
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12822
|
Dieses Script ist aus verschiedenen Gründen furchtbar (paranoide Ersetzung von Befehlen durch Variablen, Nutzung von groß geschriebenen Variablennamen für skriptinterne Variablen, umständliche Anwendung von Bedingungen, schlechte logische Struktur, ständiges Öffnen der Logdatei, keine Funktionen für sich wiederholende Aufgaben...). Ich hatte allerdings noch keine Muße, es mal durch eine bessere Version zu ersetzen. Führe das Skript doch mal mit bash -x das-script aus und poste die Ausgabe hier in einem Codeblock.
|
Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
Ich würde auch ein anderes script nehmen ? 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 | + SOURCES=(/root /etc /home /boot)
+ TARGET=/userver
+ MONTHROTATE=monthrotate
+ RSYNCCONF=(--delete)
+ MAILREC=@gmail.com
+ SSHUSER=admin
+ TOSSH=kmer.m.com
+ SSHPORT=22
+ MOUNT=/bin/mount
+ FGREP=/bin/fgrep
+ SSH=/usr/bin/ssh
+ LN=/bin/ln
+ ECHO=/bin/echo
+ DATE=/bin/date
+ RM=/bin/rm
+ DPKG=/usr/bin/dpkg
+ AWK=/usr/bin/awk
+ MAIL=/usr/bin/mail
+ CUT=/usr/bin/cut
+ TR=/usr/bin/tr
+ RSYNC=/usr/bin/rsync
+ LAST=last
+ INC=--link-dest=/userver/last
+ LOG=/root/backup.sh.log
+ /bin/date
+ '[' r '!=' / ']'
+ TARGET=/userver/
+ '[' '' ']'
+ '[' '' ']'
+ '[' -z '' ']'
+ '[' -z monthrotate ']'
++ /bin/date +%d
+ TODAY=30
+ '[' admin ']'
+ '[' 22 ']'
+ S='/usr/bin/ssh -p 22 -l admin'
+ for SOURCE in '"${SOURCES[@]}"'
+ '[' '/usr/bin/ssh -p 22 -l admin' ']'
+ '[' '' ']'
+ '[' '/usr/bin/ssh -p 22 -l admin' ']'
+ '[' krmer.md.com ']'
+ '[' -z '' ']'
+ /bin/echo '/usr/bin/rsync -e "/usr/bin/ssh -p 22 -l admin" -avR "/root" --delete "krmer.md.com:/userver/30" --link-dest=/userver/last '
+ /usr/bin/rsync -e '/usr/bin/ssh -p 22 -l admin' -avR /root --delete 'krmer.m.com:"/userver/"30' --link-dest=/userver/last
|
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12822
|
Ich sehe da jetzt keine Ausgabe, die nach einem Passwort fragt. Was geht denn jetzt schief?
|
Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
Ich wollte kein Doppelpost machen und ich habe die letzte zeile nicht kopiert
| /usr/bin/rsync -e '/usr/bin/ssh -p 22 -l admin' -avR /root --delete 'krmer.m.com:"/userver/"30' --link-dest=/userver/last
admin@kmer.m.com's password:
|
|
Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
Was müsste ich den machen damit admin@lalala.com funktioniert? Ist ja nicht dasselbe wie ssh admin@lalala.com oder habe ich da einen Überlegungsfehler? Wenn ich es könnte würde ich ja borg benützen aber leider kommt auf der qnap einen Fehlermeldung.
| [~] # borg
-sh: /usr/local/bin/borg: cannot execute binary file
|
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4577
Wohnort: Berlin
|
@Kaffetrinker: Du musst Dich von dem Benutzer aus von dem das Skript ausgeführt wird ohne jegliche Eingabe von Passwörtern anmelden können. Das kannst Du bisher ja nicht. Für Skripte die ohne Benutzerinteraktion laufen sollen, darf auch auf dem Schlüssel keine Passphrase gesetzt sein. Sonst muss man ja doch wieder ein Passwort eingeben, zu dem Zeitpunkt wo das Skript läuft.
|
frank-w
Anmeldungsdatum: 30. September 2008
Beiträge: 408
|
kleiner Schwenk aus meiner Erfahrung als QNAP-User: bei mir war es so, dass das Home-dir des admin-users immer platt gemacht wurde von dem System. d.h. dass u.a. die AuthorizedKeys weg bzw. leer war. damit ssh via public-key möglich war, musste ich den entware-ng-ssh-server verwenden und dort den Speicherort der AuthorizedKeys angeben (nicht das Home-dir verwenden!). weiterhin werden von sämtlichen Freigaben scheinbar die Berechtigungen zurückgesetzt, somit darf die AuthorizedKeys nicht in einem Share liegen.
auch bei deinem Client-Schlüssel musst du aufpassen, dass die Rechte passen (0600 und die übergeordneten Ordner dürfen auch nur bestimmte Rechte haben) siehe https://wiki.ubuntuusers.de/SSH/#Authentifizierung-ueber-Public-Keys HTH Frank
|