
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 local
odermysqldump 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.