Greifen Sie über eine einzelne SSH-Verbindung auf Remote-Dienste zu, als ob Sie lokal wären

Greifen Sie über eine einzelne SSH-Verbindung auf Remote-Dienste zu, als ob Sie lokal wären

Ist es möglich, einen einzelnen SSH-Tunnel zu erstellen, um einen Remote-Host so anzusprechen, als ob er sich auf dem lokalen System befände? Geben Sie beispielsweise die folgenden Pseudobeispiele einörtlichund erzielen Sie den gewünschten Effekt:

  • Datenbanken kopieren: mysqldump remote | mysql localodermysqldump local | mysql remote
  • Text an Remotedateien anhängen:echo blah >> remote:file.txt
  • Remotedateien ändern:sed ... remote:file.txt
  • Remote-Befehle ausführen:apk add blah

Wenn eine einzelne Verbindung nicht möglich ist, was ist die bequemste Möglichkeit, diese Dinge zu erreichen?

Antwort1

Für den Zugriff auf Remote-MySQL können Sie localhost:12345 verwenden, indem Sie Folgendes weiterleiten:

ssh -Nf -L 12345:localhost:3306 user@remote

Für die Dateioperationen können Sie den Remote-Host über SSHFS mounten:

mkdir /tmp/remote
sshfs user@remote:/ /tmp/remote
echo blah >> /tmp/remote/file.txt
sed ... /tmp/remote/file.txt

Das Ausführen von Remote-Befehlen funktioniert wie gewohnt über ssh:

ssh user@remote command ....

Dies alles können Sie mit nur einer Verbindung erledigenwenn Sie dies zu Ihrer ~/.ssh/config hinzufügen:

ControlMaster auto
ControlPath ~/.ssh/masters/%l%r@%h:%p

Die erste SSH-Verbindung ist die Master-Verbindung, die nächsten verwenden sie erneut. Neue Slave-Verbindungen sind sehr schnell verfügbar. Kein anfänglicher Overhead beim Schlüsselaustausch usw.

verwandte Informationen