Nach vier Jahren hat diese Antwort ein Update verdient. Während ich authorized_keys
mich ursprünglich selbst verwendet habe und es wahrscheinlich in einigen ausgewählten Fällen immer noch verwenden würde, können Sie auch die sshd_config
Konfigurationsdatei des zentralen Servers verwenden.
sshd_config
Sie können (für Ihren speziellen Anwendungsfall) bezeichnen eine Gruppe, wie proxy-only
oder Match
einzelne Benutzer. In sshd_config
. Dies erfolgt nach den globalen Einstellungen und widerruft, wiederholt oder verfeinert einige der in den globalen Einstellungen angegebenen Einstellungen.
Hinweis: Einige der in verwendeten Syntax / Anweisungen sshd_config(5)
sind auf der man
Seite für dokumentiert ssh_config(5)
. Lesen Sie insbesondere den Abschnitt MUSTER von ssh_config(5)
.
Für eine Gruppe bedeutet dies, dass Ihr Match
Block folgendermaßen beginnen würde:
Match group proxy-only
Sie können Match
die folgenden Kriterien: User
, Group
, Host
, LocalAddress
, LocalPort
und Address
. Um mehreren Kriterien zu entsprechen, trennen Sie einfach die Kriterien-Muster-Paare ( group proxy-only
oben) durch Kommas .
Innerhalb eines solchen Blocks, der der Kürze halber traditionell entsprechend eingerückt ist (aber nicht muss), können Sie dann die Einstellungen deklarieren, die Sie für die Benutzergruppe anwenden möchten, ohne jede einzelne authorized_keys
Datei für Mitglieder dieser Gruppe bearbeiten zu müssen .
Die no-pty
Einstellung von authorized_keys
würde durch eine PermitTTY no
Einstellung gespiegelt und command="/sbin/nologin"
würde werden ForceCommand /sbin/nologin
.
Darüber hinaus können Sie weitere Einstellungen vornehmen, um die Paranoia eines Administrators zu befriedigen, z. B. chroot
den Benutzer in seinen Home-Ordner zu verschieben und am Ende Folgendes zu erhalten:
Match group proxy-only
PermitTTY no
ForceCommand /sbin/nologin
ChrootDirectory %h
# Optionally enable these by un-commenting the needed line
# AllowTcpForwarding no
# GatewayPorts yes
# KbdInteractiveAuthentication no
# PasswordAuthentication no
# PubkeyAuthentication yes
# PermitRootLogin no
(Überprüfen Sie selbst, ob Sie die auskommentierten Zeilen benötigen oder möchten, und kommentieren Sie sie nach Bedarf aus.)
Das %h
ist ein Zeichen , das durch den Benutzers des Home - Verzeichnis ersetzt wird ( %u
würde die Benutzername und ergibt %%
ein Prozentzeichen). Ich habe es ChrootDirectory
besonders nützlich gefunden, meine sftp-only
Benutzer einzuschränken :
Match group sftp-only
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication no
Bitte beachten Sie, dass in einem Block nur bestimmte Anweisungen verwendet werden können Match
. Konsultieren Sie die man
Seite sshd_config(5)
für Details (Suche nach Match
).
autorisierte_Tasten
NB: Der Teil unter dieser Bemerkung war meine ursprüngliche Antwort. In der Zwischenzeit - aber es hängt auch von den Merkmalen Ihrer genauen sshd
Version ab - würde ich mich in den meisten Fällen für die oben beschriebene Methode entscheiden.
Ja, Sie können so feinkörnig wie Sie öffentliche Schlüssel zuweisen können. Zusätzlich zu Nologin, wie von Ajdecon empfohlen, würde ich vorschlagen, Folgendes vor dem Schlüsseleintrag in zu setzen authorized_keys
:
no-pty ssh-rsa ...
Das no pty teilt der Serverseite mit, dass diesem Schlüssel kein Pseudo-Terminal zugewiesen werden soll.
Sie können auch die Ausführung von Nologin für einen bestimmten Schlüssel erzwingen, indem Sie Folgendes voranstellen:
command="/sbin/nologin",no-pty ssh-rsa ...
no-pty
dass der Benutzer des Schlüssels allein nicht daran gehindert wird, Befehle auszuführen. Siehe superuser.com/q/1230979/195460 .Ändern Sie für jeden Nur-Tunneling-Benutzer die Anmeldeshell in / sbin / nologin. Auf diese Weise kann Ihr Benutzer nicht auf eine Shell auf dem Server zugreifen, aber dennoch eingerichtete SSH-Tunnel von seinem Client aus ausführen.
quelle
Ich weiß, dass dies möglicherweise nicht die Antwort ist, nach der Sie suchen, aber haben Sie darüber nachgedacht, OpenVPN als Alternative zu verwenden?
quelle
Wenn Sie bereit sind, die Benutzer- / Passauthentifizierung aufzugeben und Schlüssel zum Anmelden zu verwenden, können Sie für jeden öffentlichen Schlüssel Parameter angeben .
Bemerkenswerte Parameter sind:
und
und schlussendlich
Mit diesen können Sie den Benutzer dieses bestimmten Schlüsselpaares so gut wie einschränken, was er mit der SSH-Sitzung tun kann.
Es würde so aussehen:
quelle
Ich empfehle Tunnelier auszuprobieren . Es ist verdammt viel einfacher zu konfigurieren / verwalten.
quelle