Vraag SSH Toestemming geweigerd (publickey)


Ik heb geprobeerd om eerdere vragen te doorzoeken op antwoorden op mijn vraag, maar alle eerder gesuggereerde antwoorden werken niet voor mij.

Ik probeer verbinding te maken met een linode (met ubuntu 12.04 LTS) vanaf mijn lokale computer (ook met ubnutu 12.04 LTS)

Ik heb een privé- en een openbare sleutel op mijn lokale computer gemaakt en mijn openbare sleutel naar het authorized_keys-bestand van mijn linode gekopieerd. Nochtans wanneer ik om mijn linode probeer te ssh krijg ik de foutenmelding "Verleende toestemming (publickey).

Het is geen probleem met hoe ssh is ingesteld op mijn linode omdat ik er vanaf mijn Windows-machine naartoe kan sshennen met behulp van sleutelverificatie.

In mijn .ssh map op mijn lokale ubuntu machine heb ik mijn id_rsa en id_rsa.pub bestanden. Moet ik een authorized_keys-bestand op mijn lokale computer maken?

EDIT: Dit is wat ik krijg als ik ssh -vvv -i id_rsa [youruser] @ [yourLinode]

debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).

74
2018-06-22 21:20


oorsprong


1) Wat vertellen de logs op de SSH-server over de tijd dat u deze fout op de client hebt? (/var/log/auth.log) 2) Hoe heeft u de openbare sleutel overgedragen naar de server? Gebruik altijd ssh-copy-id om zeker te zijn over permissies. Uw thuismap, de .ssh map en de authorized_keys bestand hebben strikte toestemmingsvereisten. (zie manpage van sshd (8) op ~/.ssh/authorized_keys). 3) Heb je een nieuwe keypair op Ubuntu gegenereerd? Als u de sleutel opnieuw hebt gebruikt in Windows, moet u deze eerst converteren naar OpenSSH-indeling. - gertvdijk
Het bevel moeten ben geweest ssh -vvv -i .ssh/id_rsa .... (let op het pad naar id_rsa!) - gelieve te vervangen - het oude log laat alleen zien dat "we" geen pubKey hadden om te verzenden. - guntbert
@guntbert Ik heb de .ssh gemist omdat ik al in de map .ssh zat. Ik probeerde het ook met .ssh / id_rsa maar ik kreeg hetzelfde resultaat - Pattle
Ik begrijp het, dus ik heb het verkeerd gelezen. Beantwoord de vragen van @gertvdijk alstublieft. - guntbert
Kan iemand commentaar geven? stackoverflow.com/questions/51254328/unable-to-ssh-to-bitbucket Ik heb een soortgelijk probleem. - Mrinmay Kalita


antwoorden:


PubkeyAuthentication

Stel uw klant in

  1. Genereer uw sleutel
    • ssh-keygen
  2. Configureer ssh om de sleutel te gebruiken
    • vim ~/.ssh/config
  3. Kopieer uw sleutel naar uw server
    • ssh-copy-id -i /path/to/key.pub SERVERNAME

Uw configuratiebestand van stap 2 zou iets moeten hebben dat lijkt op het volgende:

Host SERVERNAME
Hostname ip-or-domain-of-server
User USERNAME
PubKeyAuthentication yes
IdentityFile ./path/to/key

Probleemoplossen

  1. gebruik de optie "-vvv"
  2. Zorg ervoor dat de server uw PUBLIC-sleutel (.pub) heeft.
  3. Zorg ervoor dat uw IdentityFile verwijst naar uw PRIVÉ-sleutel.
  4. Zorg ervoor dat uw .ssh-directory 700 heeft en uw bestanden 700 machtigingen (rwx ------).
  5. tail -f /var/log/auth.log (op de server) en controleer fouten wanneer u probeert in te loggen

66
2018-06-23 21:04



Ter info, ik heb een klein script gemaakt op github.com/centic9/generate-and-send-ssh-key die de nodige stappen in één keer uitvoert en bovendien zorgt voor alle rechten voor bestanden / mappen die me altijd hoofdpijn bezorgden ... - centic
Gewoon om stap 2 uit te werken: de IdentityFile regel in ~ / .ssh / config moet naar de PRIVÉ-toets wijzen. - Danny Schoemann
Inderdaad. - earthmeLon


Soms komt het probleem voort uit toestemmingen en eigendom. Als u zich bijvoorbeeld wilt aanmelden als root, /root, .ssh en authorized_keys moet bij root horen. Anders zal sshd ze niet kunnen lezen en kan daarom niet zien of de gebruiker geautoriseerd is om in te loggen.

In je homedirectory:

chown -R your_user:your_user .ssh

Wat betreft rechten, ga met 700 voor .ssh en 600 voor authorized_keys

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

39
2018-03-15 11:50



Dit antwoord heeft me geholpen. Ik had het advies overgenomen deze post en verplaatste mijn authorized_keys bestand buiten mijn gecodeerde homedirectory. Daarbij was ik per ongeluk van eigenaar veranderd root:root. - Jordan Grant


Je hebt het niet nodig authorized_keys op uw klant.

Je moet de ssh-client vertellen om de gegenereerde sleutel daadwerkelijk te gebruiken. Er zijn verschillende manieren om dat te doen. Alleen voor het testen van het type ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode]. U moet elke keer dat u verbinding wilt maken met de server uw wachtwoordzin opgeven.

Als dat werkt, kun je de sleutel toevoegen aan de ssh-agent met ssh-add .ssh/id_rsa (u hoeft hiervoor slechts eenmaal de wachtwoordzin in te voeren en deze zou moeten werken zolang u niet uitlogt / opnieuw opstart)


12
2018-06-22 21:42



Bedankt voor uw hulp, ik heb mijn antwoord bewerkt om te laten zien wat er gebeurt als ik typ wat u heeft voorgesteld. - Pattle
om een ​​sleutel over te dragen, gebruik je op de client ssh-copy-id - Panther
@ bodhi.zazen Bedankt, maar ik heb de sleutel al overgedragen, dat zijn niet de problemen - Pattle
"Je moet de ssh-client vertellen om de gegenereerde sleutel daadwerkelijk te gebruiken." Nee, standaard zoekt het naar de sleutel in het standaardpad, bijvoorbeeld ~/.ssh/id_rsa. Het gebruik van een sleutelagent is ook volledig optioneel en heeft geen betrekking op het probleem voor zover ik kan zien. - gertvdijk
@gertvdijk, je maakt hier aannames die nog niet worden gestaafd door feiten - we weten niet wat er op het systeem is gebeurd. - guntbert


Zorg er ook voor dat de homedirectory van de gebruiker (op de server) eigenlijk hoort bij de gebruiker waarin wordt gezocht (was ingesteld op root: root in mijn geval).

Zou moeten zijn:

sudo chown username:username /home/username;

7
2018-04-20 19:07



Ik kan ssh met openbare / privésleutels met een gebruiker op mijn lokale linuxdoos (bijvoorbeeld abc), verschillend van de gebruiker op de verre server (bijvoorbeeld def@123.456.789). Ik moest er gewoon voor zorgen dat de lokale gebruiker de lokale .ssh-bestanden bezat (bijvoorbeeld abc: abc, niet root: abc) ` - Michael
Dit werkte in mijn geval - Zerquix18


Het probleem dat ik had was dat het de verkeerde sleutels op de client gebruikte. Ik had id_rsa en id_rsa.pub hernoemd naar iets anders. Je kunt ze ofwel hernoemen naar hun standaard, of wanneer je de ssh-opdracht geeft, deze op deze manier gebruiken

ssh -i ~/.ssh/private_key username@host

6
2018-02-04 22:28





Controleer ook de waarde van PasswordAuthentication in /etc/ssh/sshd_config en als dat zo is no verander het in yes. Vergeet niet om ssh service daarna opnieuw te starten.


6
2018-02-09 10:11



De OP probeert geen wachtwoordverificatie te gebruiken. Ze hebben een beetje zin en gebruiken de publieke / private sleutel. - ctrl-alt-delor


Ik ben dit probleem onlangs tegengekomen met mijn webserver.

Ik bewaar meestal een lijst met geautoriseerde sleutels op al mijn servers in ~/.ssh/authorized_keys2. Uit mijn ervaring, sshd zal zoeken ~/.ssh/authorized_keys of ~/.ssh/authorized_keys2 standaard.

In het geval van mijn webserver, de /etc/ssh/sshd_config had deze regel

AuthorizedKeysFile    %h/.ssh/authorized_keys

in plaats van

AuthorizedKeysFile    %h/.ssh/authorized_keys2

Ik paste de laatste toe, herstartte mijn ssh-daemon en loste mijn probleem-log-in op met ssh met behulp van mijn pub-sleutel.


2
2017-11-24 05:55