Ich möchte die Art und Weise reproduzieren, wie Vagrant innerhalb eines Shell-Skripts mit einem ssh
Befehl auf meiner VM protokolliert. Daher erstelle ich einen Alias für meine Vagrant-Instanz.
Wie lautet die Befehlssyntax, um mit dem regulären ssh
Befehl darauf zuzugreifen?
shell
command-line
ssh
vagrant
Kevin Burke
quelle
quelle
vagrant ssh-config
.Antworten:
Ich musste "vagrant ssh" erneut implementieren, da die
-c
Option die Argumente nicht richtig weitergab. Dies ist im Grunde das, was es tut (es könnte mehr geben, aber es funktioniert gut auf diese Weise)Als Einzeiler (danke an kgadek):
Um zu berücksichtigen, wenn Sie mehr als einen vagabundierenden Host haben, werden der gewünschte Host ausgewählt und leere Zeilen aus der Konfiguration entfernt (mit sed):
quelle
ssh
von außerhalb desVagrantfile
Verzeichnisses zu Ihrem Vagrant gelangen ("mit dem regulärenssh
Befehl"). So habe ich die Frage interpretiert.auto_correct: true
Einstellung. Hier ist mehr Info, wie man es manuell ändertHost
Eintrag. Der geänderte Befehl lautet:ssh $(vagrant ssh-config | awk 'NR>1 {print " -o "$1"="$2}') localhost
Es gibt bereits viele Antworten, aber alle scheinen zu kompliziert zu sein oder Probleme zu lösen, die der Fragesteller nicht hatte.
einfach:
quelle
vagrant-ssh
Datei hinzuzufügen.gitignore
.zsh
) funktioniert der folgendessh -F =(vagrant ssh-config) default
ssh
Konfigurationsdatei wiedergeben:vagrant ssh-config >> ~/.ssh/config
Sie führen es einfachssh default
von einer beliebigen Stelle in Ihrem System aus. Hier finden Siedefault
den Namen der VM, die Sie wie hier-F
nicht einfach ist~/.ssh/config
wie @adamczi vorschlägt, können Sie dann die Visual Studio Code Remote - SSH-Erweiterung verwenden, um in die Vagrant-VM zu ssh und Dateien zu bearbeiten und Remote-Entwicklung durchzuführen. Einfach CMD-SHIFT-P, dann "Remote-SSH: Verbindung zum Host herstellen ..." und der soeben hinzugefügte Eintrag ssh .config wird automatisch aufgelistet - Sie wählen ihn einfach aus und voila, vscode stellt eine Verbindung zu Ihrem Remote-Vagrant-VM her! Ohne den Konfigurationseintrag bin ich mir nicht sicher, wie ich es sonst mit vscode gemacht hätte.Im Terminallauf
In einem anderen Terminalfenster / Tab ausführen
Dort sehen Sie den tatsächlichen Befehl, der von Vagrant ausgeführt wird, ungefähr so:
quelle
vagrant ssh-config
Übergeben Sie einfach die gesamte Datei als Konfigurationsdateissh
mit dem-F configfile
Parameter. Der Host-Alias, zu dem eine Verbindung hergestellt werden soll, wird in der ersten Zeile in definiertvagrant ssh-config
.Host default
bedeutet, dass Sie mit verbinden könnenssh default
.Ich konnte keine Option zum Lesen der Konfigurationsdatei von der Standardeingabe sehen, also ging ich zur Route der temporären Datei. Hier ist ein Einzeiler, der auch die temporäre
$TMPDIR.vagrant-ssh-config
Datei anschließend bereinigt . Es muss im selben Verzeichnis wie Ihr ausgeführt werdenVagrantfile
, vorausgesetzt, Ihre Vagrant-Box ist in Betrieb.Hinweis: auf meinem Mac OSX - System,
$TMPDIR
erweitert zu/var/folders/46/yltlhtgx8m5cg68_w95wgvy41324gn/T/
(jetzt). Verwenden Sie eine andere Variable oder einen anderen Ordner, wenn dieser nicht auf Ihrem System festgelegt ist.quelle
ssh -F <(vagrant ssh-config)
zsh: zsh Prozesssubstitutionssh -F =(vagrant ssh-config)
ssh -F
in bash nicht - die Art und Weise, wie Sie sie erwähnen, sollte jedoch in zsh funktionieren.Ich habe das auf sehr einfache Weise gelöst: Wenn Sie die Vagrant-Box starten, wird die SSH-Adresse wie folgt angezeigt
Anschließend können Sie eine Verbindung zur Box herstellen, indem Sie den vagabundierenden Benutzer, den Host und den Port verwenden, den Sie erhalten
quelle
vagrant
Wenn Sie stdin nicht mit verwenden müssen
ssh
(zum Beispiel möchten Sie nur einen Befehl ausführen und sich abmelden), können Sie Folgendes verwenden:Diese Methode wurde als Antwort auf eine ähnliche Frage in Google-Gruppen vorgeschlagen .
Leider funktioniert die Ersetzung von Bash-Prozessen auch nicht ( weitere Informationen finden Sie in dieser Frage unter unix.stackexchange ).
Wenn Sie eine interaktive Shell wünschen, können Sie am besten eine temporäre Datei erstellen und diese mit
ssh -F
oder verwenden,awk
wie in den anderen Antworten vorgeschlagen.quelle
Wenn Sie es nur so einrichten möchten, dass Sie die normale ssh-Befehlszeile sowie scp und dergleichen normal verwenden können, können Sie
vagrant ssh-config
die Ausgabe ausführen und an Ihre Standard-ssh-Konfiguration anhängen. Wenn Sie die Zeile "Host-Standard" durch einen aussagekräftigeren Hostnamen ersetzen, sollten Sie bereit sein.quelle
Wenn Sie nur möchten, dass der Befehl "Minimum" eine Verbindung zu Ihrer Box herstellt, müssen Sie den verwendeten Port kennen (gedruckt, wenn Sie dies tun
vagrant up
oder sichtbar tunvagrant ssh-config
) und wo sich Ihr privater SSH-Schlüssel befindet (auch sichtbar, wenn Sie dies tunvagrant ssh-config
).Dann müssen Sie nur noch den Schlüssel und den Port bereitstellen:
ssh -p 2222 -i $HOME/vagrantenv/.vagrant/machines/default/virtualbox/private_key [email protected]
quelle
Bei vielen anderen Antworten wird davon ausgegangen, dass Sie Vagrant installiert haben.
Ich habe Vagrant unter Windows 10 installiert, kann es aber nicht,
vagrant ssh
weil ich PuTTy als meinen SSH-Client verwende, den Vagrant nicht akzeptiert.In Windows 10 haben wir jedoch auch Bash unter Ubuntu unter Windows. Also benutze ich das einfach mit dem folgenden Befehl:
Es ist einfach genug, Vagrant unter Win10-Ubuntu zu installieren, aber es möchte auch, dass Sie Virtualbox aus irgendeinem Grund installieren, was ich lieber nicht tun würde.
NB Ich habe es mit der
ssh default -F vagrant-ssh-config
Methode versucht , aber ich verstehe es einfachIch vermute, das liegt daran, dass der
IdentityFile
Pfad ein Windows-Pfad ist, während er in Bash mit beginnen sollte/mnt/c/
. Ich nehme an, Sie könnten die Datei einfach ausschreiben und dann ändern, wenn dies für Sie besser funktioniert.quelle
Sie können Ihrer lokalen SSH-Konfiguration eine vagabundierende Hostkonfiguration hinzufügen.
vagrant ssh-config >> ~ / .ssh / config
ssh vagrant @ {host}
Ex. cat ~ / .ssh / config
quelle
Es gibt eine Möglichkeit, die repliziert, wie sich ein Remotebenutzer beim System anmelden kann
config.vm.network "private_network", ip: "192.168.33.10"
Dies fügt eine private IP für den Host hinzu (machen Sie es im Bereich 192.168 so, wie Sie es wünschen, solange es nicht bereits verwendet wird
your_virtual_host_name.pem
Sie finden den Schlüssel unter .vagrant \ machine \ default \ virtualbox \ private_key
Gehen Sie in Ihr Home-Verzeichnis und führen Sie Ihr übliches Unix-SSH aus
ssh -i your_virtual_hostname.pem [email protected]
Wo Benutzername, kann vagrant sein, wenn Sie eine Standard-Box haben, schauen Sie sich die Ausgabe von vagrant ssh-config für ssh Standarddetails für die Box.
Das ist es
quelle
.vagrant
Ordner im Besitz von root sind. Und die Berechtigungen für die Datei waren rw -------, sodass nur root Berechtigungen zum Lesen der Schlüsseldatei hatte. Vielleicht könnte dies für jeden hilfreich sein.Vagrant speichert den privaten Schlüssel
~/.vagrant.d/insecure_private_key
und verwendet ihn, um eine Verbindung zu jedem Computer herzustellenssh
, wenn man bedenkt, dass er für die Verbindung über Port 2200 konfiguriert ist (Standard).ssh vagrant@localhost -p 2200 -i ~/.vagrant.d/insecure_private_key
Hinweis: Stellen Sie sicher, dass der private Schlüssel dem ausgeführten Benutzer gehört
Vagrant
.Wenn Sie jedoch eine Umgebung mit mehreren Maschinen anstreben , können Sie dies verwenden
config.vm.define
.Hier ist ein Beispiel für eine Umgebung mit zwei Maschinen, von denen eine aufgerufen wird
web
und die anderedatabases
:Dann stehen Ihnen alle Vagrant-Befehle pro Maschine zur Verfügung, dh
vagrant ssh web
undvagrant provision databases
.quelle
ssh vagrant@<host>
Passwort:vagrant
Beispiele:
ssh [email protected]
oder nach Überprüfung der IP (von innen mit
vagrant ssh
)ssh [email protected]
quelle
Sie können ssh config zu ssh config für Ihren vagabundierenden Host hinzufügen.
Holen Sie sich die SSH-Konfiguration für die Vagrant-Maschine im Vagrant-Ordner:
vagrant ssh-config
Öffnen
{UserDir}/.ssh/config
und anhängen Sie das Ergebnis des vorherigen Befehls. Hinweis : Die erste Zeile bezeichnetHost default
den Alias, den Sie später für denssh
Befehl verwenden werden. Nennen Sie es als Ihre Vagabundmaschine oder Dir. Wenn Sie nur ein Vagabund-Verzeichnis haben, können Sie es benennenHost vagrant
Ssh zum Landstreicher :
ssh vagrant
. Der Nachname ist ein Alias aus dem vorherigen Schritt.quelle
Sie können jedes der
ssh-config
Argumente nehmen und sie in der Befehlszeile als an ssh übergeben-o Key=value
. Also, für einen einfachen Ein-Host - Vagabund - Setup (Sie vielleicht eine wenig mehr Arbeit mit zu tun haben ,grep
oderperl
für einen Multihost - Setup), können Sie so etwas wie die folgenden Aktionen durchführen (oder ersetzen Sieperl
mit ,sed
wenn Sie wollen):quelle
Mein Env. ist Win7 + Centos. Die Antwort mit der größten Übereinstimmung funktioniert bei mir nicht. Nach dem Scheitern nach dem Versuch
ssh -p [port] [usrname]@127.0.01
ich bin, verwende ich einfach XShell, um eine neue Sitzung mit dem vagabundierenden Port und dem Benutzernamen hinzuzufügen.Es klappt.
Vielleicht ist Xshell ein Kandidat.
quelle