Vraag Waarom krijg ik "Permission denied (publickey)" wanneer ik SSH probeer te proberen van lokale Ubuntu naar een Amazon EC2-server?


Ik heb een exemplaar van een toepassing die in de cloud wordt uitgevoerd op een Amazon EC2-instantie en ik moet deze verbinding maken met mijn lokale Ubuntu. Het werkt prima op een van de lokale ubuntu en ook op de laptop. Ik kreeg het bericht "Permission denied (publickey)" toen ik probeerde toegang te krijgen tot SSH naar EC2 op een andere lokale Ubuntu. Het is zo vreemd voor mij.

Ik denk aan een aantal problemen met beveiligingsinstellingen op de Amazon EC2, die beperkte IP-toegang tot één exemplaar of certificaat mogelijk moet regenereren.

Weet iemand een oplossing?


213
2017-07-13 07:38


oorsprong


"Vroeger werkte het eerder" - daarvoor wat? - womble♦
Ik heb een Elastic Beanstalk EC2-instantie. In augustus 2013 was de oplossing om toegang te krijgen tot de instantie als de gebruiker van de ec2-gebruiker waardoor de fout Publicatie van toestemming (Publication Denied) verdwijnt. Viz: ssh -i ./mike-key-pairoregon.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com. Natuurlijk moet je alle andere dingen als per stackoverflow.com/questions/4742478/... - mikemay
U krijgt dit probleem als u de verkeerde gebruikersnaam hebt opgegeven. De aws-documenten (docs.aws.amazon.com/AWSEC2/latest/UserGuide/...) geef momenteel een voorbeeld met gebruikersnaam ec2-user [ssh -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com], terwijl mijn ( oud) ubuntu box heeft een gebruikersnaam van ubuntu, dus toen ik het voorbeeld dat ik deze fout ontving, gebruikt, verandert het overschakelen naar de juiste gebruikersnaam. - david.barkhuizen
@ david.barkhuizen, je commentaar heeft me geholpen. Ik had een soortgelijk probleem; het bleek dat het te maken had met de gebruikersnaam. Bedankt. - NaijaProgrammer


antwoorden:


Het eerste dat u in deze situatie moet doen, is het gebruik van de -v optie om ssh, zodat u kunt zien welke soorten verificatie is geprobeerd en wat het resultaat is. Helpt dat de situatie te verlichten?

In uw update van uw vraag vermeldt u "op een andere lokale Ubuntu". Heb je de ssh private key naar de andere machine gekopieerd?


140
2017-07-13 07:44



Ik heb de ssh private key naar de andere machine gekopieerd zoals @Greg suggereerde. Het werkt nu. Bedankt! - Vorleak Chy
Ter informatie: u kunt de vlag -i gebruiken om naar het pad van de toetsen te wijzen zonder ze te installeren - Jorge Vargas
In mijn geval gebruikte ik een bitnami .ami en realiseerde ik me niet dat je moest inloggen omdat de gebruiker bitnami heette, zoals: ssh -i <keyfile> bitname@<ec2-address>. Helaas, de -v optie heeft me niet geholpen dit te vinden, maar het is nog steeds erg handig om te controleren! - Matt Connolly
nou, in mijn geval gebruikte ik de verkeerde gebruikersnaam. gebruikte "ubuntu" in plaats van "bitnami". zoals dit: ssh -i key.pem bitnami @ hostaddress - Lucas Pottersky
Een goede lead is ook het externe knooppunt zelf, kijk in /var/log/auth.log, soms ziet u de volgende berichten: Authentication refused: bad ownership or modes for file /var/lib/jenkins/.ssh/authorized_keys of iets anders - Jonas Libbrecht


Omdat het niet expliciet genoemd is, is sshd standaard erg streng op permissies voor de authorized_keys bestanden. Dus indien authorized_keys is beschrijfbaar voor iemand anders dan de gebruiker of kan beschrijfbaar worden gemaakt door iemand anders dan de gebruiker, zal het weigeren te authenticeren (tenzij sshd is geconfigureerd met StrictModes no)

Wat ik bedoel met "kan beschrijfbaar worden gemaakt" is dat als een van de bovenliggende mappen beschrijfbaar is voor iemand anders dan de gebruiker, gebruikers die deze mappen kunnen wijzigen, kunnen beginnen met het wijzigen van machtigingen op een manier dat ze gemachtigde sleutels kunnen wijzigen / vervangen.

Dit wordt niet weergegeven ssh -v, het zal verschijnen in de logs uitgezonden door sshd (meestal ingestoken /var/log/secure of /var/log/auth.log, afhankelijk van distro en syslogd configuratie).

Van man sshd (8):

 ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described above.  The
         content of the file is not highly sensitive, but the recommended
         permissions are read/write for the user, and not accessible by
         others.

         If this file, the ~/.ssh directory, or the user's home directory
         are writable by other users, then the file could be modified or
         replaced by unauthorized users.  In this case, sshd will not
         allow it to be used unless the StrictModes option has been set to
         “no”.

73
2018-01-05 14:38



Dat 'kan worden gemaakt beschrijfbaar' beetje is wat mij heeft - wmarbut
FWIW de juiste rechten voor de sleutelbestanden zijn 600 (zie hier) - Matt Lyons
Ja, mijn .authorized_keys bestand was beschrijfbaar per groep dus weigerde het te accepteren. - Aditya M P
Ik sloeg mijn hoofd tegen de muur! Mijn gebruikersmap had de verkeerde rechten. Dank je! - XJones
Hetzelfde geldt voor de map ~ / .ssh zelf. mogelijk krijgt u de volgende foutmelding: Authentication refused: bad ownership or modes for directory - Yevgeniy M.


Ik heb deze fout ontvangen, omdat ik ben vergeten toe te voegen -l keuze. Mijn lokale gebruikersnaam was niet hetzelfde als op het externe systeem.

Dit beantwoordt je vraag niet, maar ik ben hier op zoek naar een antwoord op mijn probleem.


37
2018-04-01 21:51



ssh host -l user is hetzelfde als ssh user@host, toch? - Znarkus
@Znarkus Ja, het is hetzelfde. - cregox
Yup, dit loste mijn probleem op, waardoor ook de "Publicatie" -fout (publicatierecht) werd veroorzaakt. - Brooks Moses
Dit was het probleem voor mij. Ik verwachtte dat de "root" van de gebruiker zou werken, maar ik gebruikte een Ubuntu EC2-afbeelding die de standaardgebruiker "ubuntu" had. - Cerin


Ik kreeg dit bericht op een nieuwe instantie gebaseerd op de Ubuntu AMI. Ik gebruikte de optie -i om de PEM aan te bieden, maar deze gaf nog steeds de melding "Permission denied (publickey)".

Mijn probleem was dat ik de juiste gebruiker niet gebruikte. Door de ssh met ubuntu @ ec2 uit te voeren ... werkte het als normaal.


19
2017-11-17 16:29



Ja ... ik was het commando aan het uitvoeren sudo, daarom werkte het niet. - thaddeusmt


Iets dat makkelijker te lezen is dan ssh -i (naar mijn mening natuurlijk), is tail -f /var/log/auth.log. Dat moet worden uitgevoerd op de server waarmee u verbinding probeert te maken, terwijl u probeert verbinding te maken. Het toont fouten in platte tekst.

Dit hielp me om mijn probleem op te lossen:

Gebruiker [gebruikersnaam] van xx.yy.com is niet toegestaan ​​omdat geen van de gebruikersgroepen wordt vermeld in AllowGroups


16
2018-02-01 14:07



Ik denk dat je meende -v - Tim Tisdall
dit is het logboek van de server. voor RHEL / CentOS 7: tail -f /var/log/secure - Gianfranco P.


Controleer je / Etc / ssh / sshd_config het dossier. Zoek daar de regel die zegt

PasswordAuthentication no

Die regel moet worden aangepast om ja in plaats van nee te zeggen. Start de sshd-server daarna ook opnieuw.

sudo /etc/init.d/ssh restart

11
2017-12-10 06:15



Dat zou de server minder veilig maken. - Znarkus
Dit was het probleem dat ik had: ik wilde een account instellen voor een andere gebruiker, verifiëren met slechts een wachtwoord. Ik wilde ook als mezelf kunnen inloggen vanaf plaatsen waar ik mijn privésleutel niet had. - Daniel
Hoe kunnen we gaan /etc/ssh/sshd_config - als we niet eens in de server kunnen komen? - kyo
Om in de server zelf te komen, moet u het PEM-bestand gebruiken dat zij hebben opgegeven toen u het exemplaar maakte. De instructies gaan daarna. - Sudipta Chatterjee
Dit werkte voor mij, hoewel het opnieuw opstarten van sshd het volgende commando vereiste: sudo service sshd reload - pacoverflow


Misschien niet relevant voor de huidige poster, maar kan anderen die dit vinden helpen bij het zoeken naar antwoorden op vergelijkbare situaties. In plaats van Amazon de ssh keypair te laten genereren, raad ik aan om je eigen, standaard, standaard publieke ssh-sleutel naar Amazon te uploaden en op te geven dat wanneer je een EC2-instantie uitvoert.

Hiermee kun je de syntaxis van het "i" -type in ssh neerzetten, rsync gebruiken met standaardopties, en kun je dezelfde ssh-sleutel gebruiken in alle EC2-regio's.

Ik schreef hier een artikel over dit proces:

Persoonlijke ssh-sleutels uploaden naar Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys


6
2017-09-29 21:15



+1 Heeft om deze reden deze vraag precies opgezocht. - John Riselvato
ik zie deze fout bij het volgen van uw artikel. regions = $ (ec2-describe-regions | cut -f2) Vereiste optie '-K, --private-key KEY' ontbreekt (-h voor gebruik) - KashifAli
@KashifAli U wilt de EC2 API-opdrachtregelhulpprogramma-inloggegevens instellen, zodat u niet altijd de legitimeringen op elke opdrachtregel hoeft door te geven. - Eric Hammond


Vreemd genoeg bleek mijn probleem dat de server opnieuw was opgestart en een nieuwe DNS-naam had gekregen. Ik gebruikte de oude DNS-naam. Ik weet dat dit stom klinkt, maar het kostte me een tijdje om dit uit te zoeken.


5
2017-08-08 21:00



Dank je! Dit was precies mijn probleem. Ik wist niet dat de DNS-naam is gewijzigd toen je een exemplaar herstartte. - Tim Swast
In mijn geval veranderde de * .compute.amazonaws.com URL toen ik een elastisch IP-adres toewees. - Geoffrey Booth


Als u CentOS 5 gebruikt, wilt u misschien instellen StrictModes no in /etc/ssh/sshd_config. Ik deel / home directory met behulp van NIS / NFS en ik heb alle rechten correct ingesteld, maar het heeft me altijd gevraagd om het wachtwoord. Nadat ik heb ingesteld StrictModes no, het probleem verdween!


2
2017-07-10 04:58





Het antwoord van Greg legt uit hoe je problemen kunt ondervinden om het beter op te nemen, maar het echte probleem is dat je een ssh-sleutel hebt ingesteld aan de ene kant van de transactie (de client), die een poging doet om de openbare sleutel te authenticeren in plaats van op wachtwoord gebaseerde authenticatie. Omdat u de bijbehorende openbare sleutel niet op de EC2-instantie hebt, werkt dit niet.


1
2017-07-13 08:11



Hoe lost u het probleem op? - Julien Grenier


Ik had hetzelfde probleem en na het uitproberen van talloze oplossingen die niet werkten, opende ik de SSH-poort op de firewall van mijn router (het firewall-bedieningspaneel van mijn router is een puinhoop, dus het is moeilijk te zeggen wat er aan de hand is). Hoe dan ook, dat loste het :)

Super Bloederig vervelend dat de fout die je krijgt Permissie Geweigerd is, wat impliceert dat er een soort van verbinding is gemaakt, grr.


1
2018-06-29 18:16