Ich habe einen neuen Benutzer in meiner Vagrant-Box (trusty64) und versuche, mich per SSH darauf anzumelden. Anstatt mich vagrant
nach dem Benutzer anzumelden vagrant up
, möchte ich mich mit meinem Benutzernamen anmelden.
Was ich bisher getan habe
- Auf meinem Gastcomputer wurde ein Benutzer erstellt.
- Erstellt SSH-Schlüssel in meinem Host mit
ssh-keygen
- Kopierte den SSH-Schlüssel zum Gast mit
ssh-copy-id -p 2222 -i [email protected]
und der Teil des Vagrantfile sieht so aus
config.vm.box = "ubuntu/trusty64"
config.ssh.username = "shash"
config.ssh.forward_agent = true
config.ssh.private_key_path = "~/.ssh/authorized_keys"
Ich kann mich direkt anmelden, aber beim Eingeben erhalte ich immer den folgenden Fehlerssh -p '2222' '[email protected]'
vagrant up
default: Warning: Connection timeout. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
Ich bin für jede Hilfe bei der Lösung dieses Problems sehr dankbar. Danke!
Antwort1
config.ssh.private_key_path
sollte auf Ihre private Schlüsseldatei verweisen (normalerweise ~/.ssh/id_rsa
wird der Name der Datei angezeigt, wenn Sie ausführen ssh-keygen
),nicht ~/.ssh/authorized_keys
.
Antwort2
Eine alternative Möglichkeit, dies zu erreichen, besteht darin, am Ende Folgendes hinzuzufügen ~vagrant/.bashrc
:
ssh chsc
exit
Wenn Sie sich das Erstellen und Installieren eines SSH-Schlüssels ersparen möchten, können Sie su
stattdessen Folgendes verwenden. Allerdings können Sie damit innerhalb der Vagrant-Box Ihren SSH-Forward-Agenten nicht ssh
verwenden, wenn Sie innerhalb der Box eine Verbindung zu externen Servern herstellen müssen:
sudo su chsc
exit
Wenn Sie solche Änderungen vornehmen, ~vagrant/.bashrc
riskieren Sie, sich im Fehlerfall aus der Shell auszusperren. Ich empfehle, ein offenes Terminal als angemeldet zu lassen vagrant
, bis Sie sichergestellt haben, dass alles funktioniert. Wenn etwas schief geht, benennen Sie einfach .bashrc ( mv .bashrc .bashrc-bak
).