OpenSsh
Version vom 3. September 2019, 11:10 Uhr von Hamatoma (Diskussion | Beiträge) (→ssh-Sitzung mit Schlüssel)
Konfiguration
Schlüsselgenerierung
ssh-keygen -t rsa -b 4096
ssh-Sitzung mit Schlüssel
- id_rsa.pub auf dem Zielrechner in die Datei authorized_keys eintragen
- Verzeichnis ist das Homeverzeichnis des Users, mit dem angemeldet wird.
chmod 755 .ssh chmod 600 .ssh/authorized_keys drwxr-xr-x 2 wk wk 4096 Jul 28 2017 .ssh/ -rw-r--r-- 1 wk wk 1332 Aug 29 2018 .ssh/known_hosts -rw------- 1 wk wk 1921 Jun 26 2017 .ssh/authorized_keys -rw------- 1 wk wk 3326 Jul 28 2017 .ssh/id_rsa -rw-r--r-- 1 wk wk 735 Jul 28 2017 .ssh/id_rsa.pub
Kommandos
ssh -i /home/jonny/id_rsa jonny@extern.host.de rsync -e "ssh -i /home/jonny/id_rsa" /home backup@backup.example.com ssh-copy-id -i ~/.ssh/id_rsa hm@host
Port-Forwarding
Auf dem Server in /etc/ssh/sshd_config:
# allow remote port forwarding: GatewayPorts yes
- systemctl reload sshd
Lokal:
ssh -nNT -p 10106 -R 6379:localhost:6379 wk@bt
SFTP-chroot-Umgebung
- /etc/ssh/sshd_config
Match Group sftponly ChrootDirectory /home/%u ForceCommand internal-sftp AllowTcpForwarding no
oder
Match User jonny ChrootDirectory /opt/jail_jonny ForceCommand internal-sftp AllowTcpForwarding no
- Rechte /opt/jail_jonny:
DIR=/opt/jail_jonny chown root.root $DIR chmod 755 $DIR
- Eintrag in /etc/fstab:
/data/dir1 /opt_jail_jonny none bind
Zugriff auf RSync beschränken
- Client
- Benutzer einrichten: adduser extbup
- Keys erzeugen, ohne Passwort
- in /home/extbup/.ssh/id_rsh.pub steht: ssh-rsa AAAAB3NzaC1y...5Ow== extbup@caribou
- Server:
- User einrichten: adduser buptiger
- In /home/buptiger/.ssh/authorized_keys:
command="/usr/local/bin/rrsync /opt/extbackup/caribou",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...5Ow== extbup@caribou
oder mit Nur-Lese-Zugriff (oder -wo für Nur-Schreibzugriff):
command="/usr/local/bin/rrsync -ro /opt/extbackup/caribou",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...5Ow== extbup@caribou
FN=/usr/local/bin/rrsync test -x $FN || gunzip /usr/share/doc/rsync/scripts/rrsync.gz -c > $FN && chmod uog+x $FN
- Client:
- Die Zielpfadangabe von rsync ist immer relativ zu dem im Server angegebenen Verzeichnis /opt/extbackup/caribou
- rsync -a /opt/backup/dayly buptiger@server:.
rsync unter anderem Port erreichen
rsync -a -e 'ssh -p 10106' /home/ bupsrv@bigtoy:/bup-home
Chroot für rsync:
- /usr/local/bin/MkChroot.pl:
SCRIPT=/usr/local/bin/MkChroot.pl cat <<'EOS' >$SCRIPT #! /usr/bin/perl use strict; my $gv_zip = "/tmp/chroot.zip"; my $prog = shift; my %gv_files; if ($prog eq ''){ die "usage: MkChroot.pl <program>"; } if ($prog !~ m!/!){ $prog = qx(which $prog); } &Init; &Add($prog); exit 0; sub HandleLibs{ my $prog = shift; my @lines = qx(ldd $prog); foreach my $line(@lines){ # => /lib/x86_64-linux-gnu/libdl.so.2 if ($line =~ m!^\s*(/\S+)!){ &Add($1); } elsif ($line =~ m!=> (/\S+)!){ &Add($1); } else { print "ignored: $line"; } } } sub Add { my $file = shift; if ($gv_files{$file} eq ''){ my $cmd = "zip -9 $gv_zip $file"; print $cmd, "\n"; system($cmd); $gv_files{$file} = 1; &HandleLibs($file); } } sub Init{ foreach(qx(unzip -Z -1 $gv_zip)){ chomp; $gv_files{"/$_"} = 1; } } EOS chmod uog+x $SCRIPT
- Erstellen der chroot-Umgebung:
MkChroot.pl /bin/bash MkChroot.pl rsync cd /opt/jail unzip /tmp/chroot.zip
- Mount als /etc/fstab-Eintrag:
/opt/www /opt/jail/www none bind 1 0
- /etc/ssh/sshd_config
Match User jonny ChrootDirectory /opt/jail_jonny AllowTcpForwarding no