ssh ProxyCommand

ssh ProxyCommand ist verdammt praktisch, wenn man auf Server in einer DMZ nicht direkt drauf kommt, sondern einen Hob dazwischen nehmen muss. Ohne ssh ProxyCommand sieht der übliche Weg wie folgt aus:

desktop$ ssh firewall
firewall$ ssh dmzhost
dmzhost$

Wie unpraktisch! Ein wenig besser ist

desktop$ ssh -t firewall ssh dmzhost
dmzhost$

Aber mit ssh ProxyCommand geht das ganze deutlich schicker. Dazu muss man folgendes in seiner .ssh/ssh_config oder in der /etc/ssh/ssh_config ergänzen:

Host dmzhost
  Hostname dmzhost
  User username
  ForwardAgent yes
  Port 22
  ProxyCommand ssh remoteuser@firewall nc %h %p

2 Dinge sind dabei erwähnenswert: 1. Durch netcat (nc) ist über den Weg auch scp möglich und 2. kann man diese ssh-Kette beliebig weiter führen. Kann man zum Beispiel einen internen Host nur über dmzhost erreichen so hilft folgender Eintrag weiter:

Host internalhost
  Hostname internalhost
  User username
  ForwardAgent yes
  Port 22
  ProxyCommand ssh remoteuser@dmzhost nc %h %p

Cool, oder? Natürlich müssen dmzhost, internalhost, firewall durch die richtigen auflösbaren Hostnamen ersetzt werden und der username muss natürlich auch dem richtigen entsprechen.

Aufgeschrieben habe ich mir das, weil ich heute darüber mit einem Kollegen gesprochen habe und leider nachsehen musste (RTFM).

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

ssh-copy-id

Eben habe ich in einem Wiki gelesen, wie man für SSH einen Public Key kopieren soll:

cat ~/.ssh/id_rsa.pub | ssh root@172.16.1.1 'cat - >> ~/.ssh/authorized_keys'

Bei dem Tipp sind mehrere Dinge problematisch:

  1. wer sagt, dass es ein rsa Key ist und kein dsa?
  2. gibt es .ssh schon?
  3. hat .ssh und authorized_keys die richtigen Rechte?

Die Befehlszeile müsste weit umfangreicher sein…

Aber halt es geht viel einfacher mit

ssh-copy-id user@host

Mehr Optionen unter man ssh-copy-id

PS: MAC OS X kennt das Kommando nicht …

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

MySQL Dumps/Strukturen kopieren

Wie oft bin ich zum Kopieren für MySQL-Dumps so vorgegangen:

mysqldump -u user -p db | gzip > db.gz
scp db.gz user@remote.server.net:/var/tmp
zcat db.gz | mysql -u user -p db

Nur weil ich zu faul war mir das mit MySQL und SSH genauer zu merken. Daher schreib ich mir das jetzt mal wieder auf.

  1. Komplette DBs via mysql kopieren:
    mysqldump db | mysql -h remote.server.net db
  2. Komplette DBs via ssh kopieren:
    mysqldump db | ssh user@remote.server.net mysql db
  3. Oder nur die Struktur per ssh kopieren:
    mysqldump -d db | ssh user@remote.server.net mysql db

Na hoffentlich tue ich mir den scp Umweg nicht nochmal an.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

nutzloses hotssh

Gestern hatte ich endlich Zeit mein Notebook mal wieder auf den aktuellen Stand zu bringen. Ich hab Ubunutu auf 9.04 gebracht. Seither ist hotssh nutzlos. Egal welchen User ich für eine aktuelle Verbindung nutze hotssh versucht wieder und wieder sich mit meinem aktuellen User anzumelden. Nachdem die meisten meiner Kisten per fail2ban „gesichert“ sind werde ich nach kürzester Zeit ausgesperrt. Schade! Das Tool wäre wirklich so praktisch.

Den Bug habe ich mal bei Ubuntu eigekippt, denn Otto hat das gleiche Problem und hat schon beim Entwickler selbst einen angelegt. Hier der Link zu meinem Bug Report. Hoffentlich wird der resolved.

Kennt jemand eine Alternative zu hotssh?

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

SSH Root Zugang – aber sicher

Auf vielen Maschinen verbiete ich den SSH Zugang per Root per default indem ich in der sshd_config folgendes eintrage:

PermitRootLogin no

Damit muss sich jeder erst einmal persönlich anmelden und kann dann lokal root werden. So ist sauber dokumentiert, wer sich angemeldet hat.

Manchmal geht das aber nicht. Es gibt Fälle, wo der root User von anderen Sachen benutzt wird (z.B. Backup-Software). Ist zwar nicht schön, aber wenn es sein muss. Dann muss ich aber auch jedes mal wieder nachlesen, wie ich den Root-Zugang auf Zertifikate beschränke. Daher hier die Notiz. So geht’s:

PermitRootLogin without-password

Das ganze ist natürlich nur so sicher, wie der private Schlüssel des öffentlichen Schlüssels, der beim Root-User hinterlegt ist.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Schon wieder ein SSH Tipp: VPN

SSH kann mehr als einfaches Tunneln per Portforwarding. Mit SSH kann man sehr einfach Punkt zu Punkt VPNs bauen. Der interessante Parameter ist hier -w. Damit wird sowohl auf der lokalen als auch auf der entfernten Seite ein Tun Interface etabliert.

Eine schöne Anleitung wie das ganze automatisiert werden kann habe ich auf dieser Debian Administration Seite gefunden.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

check_by_ssh booster

Nachdem ich mir das Connection Sharing von SSH von SSH notiert hatte habe ich mich gefragt, warum ich das nicht gleich für Nagios check_by_ssh Plugin benutze.

Also habe ich das heute morgen mal versucht. Das ganze ist noch nicht ausgereift und fast noch nicht getestet, sollte dennoch aber ein wenig was bringen. Was habe ich also getan bzw. was ist notwendig.
check_by_ssh booster weiterlesen

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

SSHerminator oder besser geht’s immer

Wie geil ist das denn. Vorgestern habe ich noch über hotssh geschrieben. Und heute finde ich schon eine bessere Version. Der 15 jährige David Futcher hat hotssh und terminator zum SSHerminator kombiniert. Eine sehr sehr gute Idee. Muss ich unbedingt nach den Feiertagen versuchen.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Hotssh

Hotssh ist mal wirklich ein sehr praktisches Tool für gnome. Hab ich gleich installiert. und werde ich wohl in Zukunft statt plainssh nehmen.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

idle…

Mist! Schon wieder mal vergessen einen root User auf der Console abzumelden. Ziemlich unsicher. Peinlich, peinlich. Zeit Abhilfe zu schaffen. Gut, dass die Bash dafür eine Lösung hat. Einfach folgendes Script als /etc/profile.d/tmout.sh anlegen. Fertig.

export TMOUT=300

Damit fliegen alle untätigen User nach 300 Sekunden raus. Logisch, dass man auch zwischen SSH Usern und lokalen unterscheiden kann. Mit folgenden Script bleiben lokale eine Stunde online:

if [ -z "$SSH_CLIENT" ]; then
        TMOUT=3600
else
        TMOUT=300
fi
export TMOUT

Achtung bei Debian basierenden Systemen: Debian ist hier nicht ganz [[Linux Standard Base]] konform und wertet die Files unter /etc/profile.d per default nicht aus! Also entweder das Skript an einer anderen Stelle platzieren oder /etc/profile entsprechend anpassen.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)