Ich versuche, dieser Anweisung zu folgen . Ich habe ein lokales Git-Repo und wenn ich einen Git-Push mache, muss das Repo auf meine EC2-Instanz übertragen werden.
Im obigen Tutorial git push origin master
erhalte ich jedoch eine Permission denied (publickey)
Fehlermeldung, weil ich die Identitätsdatei nicht angegeben habe.
Angenommen, ich melde mich wie folgt bei EC2 an: ssh -i my_key.pem [email protected]
Kann ich hier etwas Ähnliches tun wie: git -i my_key.pem push origin master
oder die Identitätsdatei in setzen.git/config
Wie kann ich es einrichten?
Update: Ausgabe von git config -l
user.name=my name
[email protected]
github.user=userid
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
remote.origin.url=ec2_id@my_e2_ip_address:express_app
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
Update (aus @ Jons Kommentar ):
Wenn Sie Ihren Schlüssel auf einem ungeraden Pfad haben, führen Sie ihn einfach aus ssh-add /private/key/path
. Das hat bei mir funktioniert.
quelle
ssh-add /private/key/path
hat funktioniert!express_app
in deiner Konfiguration?Antworten:
Versuchen Sie dies, um Ihren lokalen SSH-Schlüssel nach Amazon zu kopieren
Natürlich die Namen des Schlüssels und der öffentlichen DNS von amazon ec2 ersetzen.
Sie können dann Ihre Fernbedienung auf Amazon einrichten
quelle
Die hier aufgeführten Anweisungen waren für mich nützlicher.
Über den Link:
Passen Sie Ihre an
~/.ssh/config
und fügen Sie hinzu:Verwenden Sie nun den SSH-Host-Alias als Repository:
Und es sollte den
other_id_rsa
Schlüssel benutzen !quelle
git remote add ec2 ssh://[email protected]:zivot
. Ich wusste vorher nicht, dass man Adressen voranstellen kannssh://
.Bearbeiten Sie auf Ihrem lokalen Computer Ihre ~ / .ssh / config und fügen Sie Folgendes hinzu:
Sie sollten sich mit "ssh example" bei Ihrer Instanz anmelden können. Denken Sie daran, dass Ihr privater Schlüssel chmod 400 sein sollte. Wenn Sie ohne Verwendung von "ssh -i mykey.pem Benutzername @ Host" ssh können, gehen Sie wie folgt vor.
Initialisieren Sie auf Ihrer EC2-Instanz ein nacktes Repository, das ausschließlich zum Pushen verwendet wird. Die Konvention besteht darin, die Erweiterung ".git" zum Ordnernamen hinzuzufügen. Dies kann anders aussehen als Ihr lokales Repo, das sich normalerweise als .git-Ordner in Ihrem "Projekt" -Ordner befindet. Bare Repositorys (per Definition) haben keinen funktionierenden Baum, sodass Sie ihnen nicht einfach Dateien hinzufügen können, wie Sie es in einem normalen nicht nackten Repository tun würden. Dies ist genau so, wie es gemacht wird. Auf Ihrer ec2-Instanz:
Verwenden Sie jetzt auf Ihrem lokalen Computer den SSH-Host-Alias, wenn Sie Ihre Fernbedienung einrichten.
Jetzt sollten Sie in der Lage sein:
Jetzt wird Ihr Code ohne Probleme auf den Server übertragen. Das Problem an dieser Stelle ist jedoch, dass Ihr WWW-Ordner auf der ec2-Instanz nicht die tatsächlichen "Arbeitsdateien" enthält, die Ihr Webserver ausführen muss. Sie müssen also ein "Hook" -Skript einrichten, das ausgeführt wird, wenn Sie auf ec2 pushen. Dieses Skript füllt den entsprechenden Ordner auf Ihrer ec2-Instanz mit Ihren tatsächlichen Projektdateien.
Wechseln Sie also auf Ihrer ec2-Instanz in Ihr Verzeichnis project_folder.git / hooks. Erstellen Sie dann eine Datei mit dem Namen "post-receive" und chmod 775 (sie muss ausführbar sein). Fügen Sie dann dieses Bash-Skript ein:
Führen Sie nun auf Ihrem lokalen Computer einen "git push ec2 master" aus, der den Code auf Ihr nacktes Repo übertragen soll. Anschließend checkt das Post-Receive-Hook-Skript Ihre Dateien in den entsprechenden Ordner aus, für den Ihr Webserver konfiguriert ist.
quelle
post-receive
Datei ausführbar istSie müssen einen SSH-Schlüssel generieren und auf die EC2-Instanz hochladen. Folgen Sie diesem Tutorial: http://alestic.com/2010/10/ec2-ssh-keys
quelle
ssh-add /private/key/path
.Ich fand, dass dies der schnellste Weg war: https://gist.github.com/matthewoden/b29353e266c554e04be8ea2058bcc2a0
Grundsätzlich:
ssh-add /path/to/keypair.pem
(das "-add" muss direkt nach dem ssh sein)Überprüfen Sie, ob es funktioniert hat von:
ssh ubuntu@crazylongAWSIP
(Möglicherweise ist Ihr Benutzername nicht Ubuntu)Danach können Sie ein Git-Repo auf Ihrem ec2 einrichten und darauf zugreifen:
Sie haben die Möglichkeit, ein "nacktes" Git-Repo auf Ihrem ec2 einzurichten (was bedeutet, dass andere Git-Repos daraus ziehen und darauf pushen können, aber keine Dateien enthalten), oder Sie können ein NORMAL-Repo und Push einrichten direkt darauf (meine Präferenz, wenn Sie lokale Änderungen an Ihrem ec2 vornehmen möchten, ohne ständig in Ihr ec2 ssh müssen).
Wenn Sie ein NORMAL-Repo auf dem ec2 einrichten möchten, ssh in das ec2, machen Sie ein
git init
wo Sie wollen, und machen Sie dann Folgendes :Siehe: Kann nicht in das Git-Repository pushen, um zu erklären, dass der aktuelle Zweig verweigert wurde.
quelle
ssh-keygen
vor Ort~/.ssh/
Verzeichnis sollte jetzt eine Datei mit öffentlichem Schlüssel mit dem Namen "id_rsa.pub
Kopieren" angezeigt werden. Kopieren Sie die Inhalte dieser Datei in die/etc/ssh/authorized_keys
Datei, die sich auf Ihrem Remote-Server befindet .Sie können den Inhalt entweder kopieren und einfügen oder die Datei zuerst auf Ihren Remote-Server hochladen und den folgenden Befehl verwenden:
cat id_rsa.pub >> /etc/ssh/authorized_keys
quelle
Ich poste hier nichts Neues, denke ich, aber ich musste die obigen Antworten durchgehen, um meinen speziellen Fall anzusprechen. Ich habe eine Ubuntu-Instanz auf EC2.
Um mich bei meiner Instanz anzumelden, musste ich Folgendes tun:
Die Schlüsseldatei "pemfile.pem" musste in Anführungszeichen stehen.
Ich habe die Fernbedienung hinzugefügt:
Aber als ich versuchte zu pushen:
Ich habe:
Um das zu beheben, habe ich:
Was mir eine Antwort gab,
Danach ging der Schub gut durch.
quelle
Bei der Bereitstellung über die Quellcodeverwaltung wurde mir die Berechtigung verweigert , und ich konnte nicht herausfinden, warum. Ich stellte fest, dass mein Benutzer, für den ich einen SSH-Schlüssel erstellte (Ubuntu, auch die empfohlene Anmeldung für meinen ec2-Server), nicht der Benutzer war, der für die Cap-Bereitstellung (root) verantwortlich war. Das Ausführen eines ssh-keygen für root und das Hochladen dieses ssh-Schlüssels als Bereitstellungsschlüssel für bitbucket lösten meine Probleme.
quelle
Ich weiß, dass ich dafür zu spät bin, aber ich wollte nur diesen Artikel teilen, den ich in nur wenigen Sekunden erfolgreich auf EC2 Git Repo übertragen habe
http://shirtdev.wordpress.com/2011/05/04/setting-up-a-git-repository-on-an-amazon-ec2-instance/
quelle
Hier ist die EINFACHSTE Methode, die für mich hervorragend funktioniert hat ... Ich hatte Probleme beim Klonen eines Repositorys ... Es wurde der von mir erstellte SSH-Schlüssel nicht erkannt ... Anstatt Ihre Konfigurationsdatei und all das zu ändern, habe ich einfach REAL kopiert SSH-Schlüssel, mit dem versucht wurde, eine Verbindung herzustellen, und ich habe dies zu Bitbucket hinzugefügt ... hier ist der Befehl:
Verwendete VI, um den REAL RSA-Schlüssel zu öffnen und den Inhalt zu kopieren und in bitbucket einzufügen ... Fertig!
quelle
Für alle anderen, die interessiert sein könnten, erwies sich diese Lösung als die sauberste und einfachste für mich:
http://eric.sau.pe/accessing-a-git-repository-using-a-key-pair/
quelle