Kysymys:
macOS Sierra ei tunnu muistavan SSH-avaimia uudelleenkäynnistyksen välillä
bisherbas
2016-09-25 17:39:51 UTC
view on stackexchange narkive permalink

Minun on suoritettava tämä komento päivityksen jälkeen macOS: iin:

  ssh-add -K
 

Korjaa ongelman uudelleenkäynnistyksen jälkeen, mutta minun on suoritettava tämä komento aina, kun kirjaudun tietokoneelleni.

Jos en suorita yllä olevaa komentoa, avaimet ~ / .ssh ohitetaan ja minulta kysytään palvelimen salasanaa yhteyden muodostamiseksi.

`$ ssh-add -K` antaa minulle` ssh-add: laiton vaihtoehto - K`
Sinun on syötettävä yksityisen avaimen polku `-K`: n jälkeen.Katso päätöslauselma @JakeGould: n vastauksesta.
10.12.2-päivitys poisti joitain tarpeettomia palvelimen salasanapyyntöjä.Sinun ei ehkä enää tarvitse suorittaa ssh-add -K: ta.
Katso myös https://apple.stackexchange.com/questions/48502/how-can-i-permanently-add-my-ssh-private-key-to-keychain-so-it-is-automatically
Kymmenen vastused:
#1
+238
mluisbrown
2016-12-15 19:57:00 UTC
view on stackexchange narkive permalink

MacOS Sierra 10.12.2: sta lähtien Apple lisäsi ssh_config -vaihtoehdon nimeltä UseKeychain , mikä mahdollistaa ongelman oikean ratkaisun.Lisää seuraava tiedosto ~ / .ssh / config -tiedostoon:

  Host *
   AddKeysToAgent kyllä
   UseKeychain kyllä
 

ssh_config man -sivulta 10.12.2:

UseKeychain

Määrittää macOS: ssa, pitäisikö järjestelmän etsiä salasanoja käyttäjän avainnipusta, kun yritetään käyttää tiettyä avainta.Kun käyttäjä antaa salasanan, tämä vaihtoehto määrittää myös, pitäisikö salasana tallentaa avaimenperään, kun se on vahvistettu oikeeksi.Argumentin on oltava "kyllä" tai "ei".Oletusarvo on ei.

Tämä on hyvä vinkki, mutta viime kädessä se ei ole liikaa parempi kuin lisäämällä `ssh-add -K [polku avaimeen]` tiedostoon `.bash_profile`, koska molemmat menetelmät edellyttävät käyttäjän muokkaamia tiedostoja käyttäjätilillä, joka oliei koskaan tarvittu aiemmin saman toiminnallisuuden saavuttamiseksi.
Tämän linkin mukaan: https://openradar.appspot.com/27348363 Apple on "linjannut [käyttäytymisensä] uudelleen tämän alueen valtavirran OpenSSH: n kanssa".
On järjetöntä, että Apple muutti käyttäytymistä tavalla, joka aiheuttaa ongelmia suurimmalle osalle kehittäjiä (GitHub-työnnön takia, ellei mitään muuta), eikä sanonut mitään kenellekään!
Mielestäni `IdentityFile ~ / .ssh / id_rsa` on tarpeeton ja sitä ei tarvita (kun tarkastellaan oletusasetuksia).En ole koskaan asettanut tätä vaihtoehtoa ssh-asetustiedostooni.
@JakeGould IMO muuttaa ~ / .ssh / config ~ `on suositeltavin, koska se ratkaisee ongelman` ssh`-tasolla.Ei ole täysin varma siitä, että `.bash_profile`-mod toimii GUI-asiakkaille, jotka käyttävät ssh: tä käyttämättä kuorta.
Apple julkaisi [tekninen huomautus TN2449] (https://developer.apple.com/library/content/technotes/tn2449/_index.html) kyseisestä muutoksesta.
Maininta "id_rsa" tässä vastauksessa on hämmentävää.
@commonpike @therealmarv Olen poistanut vaihtoehdon `IdentityFile` vastauksesta, koska sitä ei vaadita.
Toimii myös 10.13
Kuten mainitsin osoitteessa https://apple.stackexchange.com/questions/48502/how-can-i-permanently-add-my-ssh-private-key-to-keychain-so-it-is-automatically#comment401317_250572: Apple kehottaa käyttämään `IgnoreUnknown UseKeychain` -ohjelmaa yhteensopivuuteen Linuxin kanssa
Jotkut tärkeimmistä syistä, miksi "UseKeychain yes" lisätään .ssh / config-tiedostoon jokaiselle avaimelle, on parempi tapa kuin "ssh-add": n käyttäminen: 1. Se on tuettu ja suositeltava.2. Se ei nojaa kuoreen, kuten lisäämällä tiedostoon ".bash_profile".3. Sen avulla * ei * voi lisätä salasanaa erityisen arkaluontoiselle avaimelle.4. Jos lisäät uuden avaimen, sinun on todennäköisesti muokattava `config`-tiedostoa joka tapauksessa, jotta voit tehdä kaiken yhdessä paikassa.
Aikooko "UseKeychain yes" -asetus tallentaa salasanan uudelleenkäynnistyksen aikana (ts. Kirjoitetaan levylle)?Jos on, onko olemassa tapa estää tämä tapahtumasta?En ymmärrä, kuinka on hyvä tallentaa SSH-tunnuslause mahdollisesti vähemmän turvalliseen paikkaan.
@intuited-salasana tallennetaan levylle käyttäjän avainnipulle (sitä tarkoittaa `` UseKeychain yes '').MacOS-avaimenperät salataan turvallisesti.Jos et halua, että ne tallennetaan avaimenperään, aseta tämä vaihtoehto ei, mutta silloin salasanoja ei tietenkään jatketa uudelleenkäynnistyksissä, mistä tässä kysymyksessä on kyse.
Konfigurointitiedosto ei ollut edes siellä minulle.Minun piti lisätä se itse
Edellinen `Host *` -rivi on tarpeeton.Kaikki vaihtoehdot, jotka eivät ole `` Host '' -kohdassa, katsotaan globaaleiksi määrityksiksi.
#2
+115
Giacomo1968
2016-09-27 07:23:41 UTC
view on stackexchange narkive permalink

Minulla oli myös tämä ongelma, kun yritin ottaa koodia käyttöön Capistranolla. Erittäin turhauttavaa. Tässä on kaksi tapaa, joista tiedän tämän ongelman käsittelemiseksi.

Tapa 1: Lisää kaikki tunnetut avaimet SSH-agenttiin.

Yksi ratkaisu, jonka löysin, on ajaa ssh-add -A -vaihtoehdolla - joka lisää kaikki tunnetut henkilöt SSH-agentille käyttämällä avainnippuun tallennettuja salasanoja - näin:

  ssh-add -A
 

Tämä toimii nyt, mutta se ei jatku uudelleenkäynnistyksissä. Joten jos et halua enää koskaan huolehtia tästä, avaa käyttäjän ~ / .bash_profile -tiedosto näin:

  nano ~ / .bash_profile
 

Ja lisää tämä rivi alareunaan:

  ssh-add -A 2> / dev / null;
 

Kun avaat uuden pääteikkunan, kaikkien pitäisi olla hyviä!

Tapa 2: Lisää agenttiin vain SSH-avaimet, jotka ovat avaimenperässä .

Joten vaikka ssh-add -A -vaihtoehdon pitäisi toimia useimmissa perustapauksissa, törmäsin äskettäin ongelmaan, jossa minulla oli 6-7 Vagrant-laatikkoa (joka käyttää SSH-avaimia / identiteettejä pääsyyn) asennus koneella tavallisemman id_rsa.pub -kohdan päälle.

Pitkä tarina, päädyin lukitsemaan etäpalvelimen liian monien epäonnistuneiden SSH-avaimiin / identiteetteihin perustuvien kokeiden vuoksi, koska palvelimen käyttö perustui salasanaan ja SSH-avaimet / -identiteetit ovat SSH-avaimia / identiteettejä. Joten SSH-agentti yritti kaikki SSH-avaimeni, epäonnistui, enkä edes päässyt salasanakehotteeseen.

Ongelmana on, että ssh-add -A lisää mielivaltaisesti kaikki yksittäiset SSH-avaimesi / henkilöllisyytesi agentille, vaikka se ei olisikaan tarpeen; kuten Vagrant-laatikoiden tapauksessa.

Ratkaisuni pitkän testauksen jälkeen oli seuraava.

Ensinnäkin, jos agenttiisi on lisätty enemmän SSH-avaimia / identiteettejä kuin tarvitset - kuten ssh-add -l osoittaa, puhdista ne kaikki agentilta näin:

  ssh-add -D
 

Kun tämä on tehty, käynnistä SSH-agentti taustaprosessina näin:

  eval "$ (ssh-agent -s)"
 

Nyt se tulee oudoksi, enkä ole aivan varma miksi. Joissakin tapauksissa voit lisätä ~ / .ssh / id_rsa -avaimen / identiteetin erityisesti agenttiin näin:

  ssh-add ~ / .ssh / id_rsa
 

Kirjoita salasana, paina Return ja sinun pitäisi olla hyvä mennä.

Mutta muissa tapauksissa yksinkertaisesti tämän suorittaminen riittää avaimen / identiteetin lisäämiseen:

  ssh-add -K
 

Jos kaikki onnistui, kirjoita ssh-add -l ja sinun pitäisi nähdä yksi yksinäinen SSH-avain / identiteetti.

Kaikki hyvä? Avaa nyt .bash_profile :

  nano ~ / .bash_profile
 

Ja lisää tämä rivi alareunaan; kommentoi tai poista -A -versio, jos sinulla on sellainen:

  ssh-add -K 2> / dev / null;
 

Tämä mahdollistaa SSH-avaimen / identiteetin lataamisen uudelleen SSH-agenttiin jokaisen käynnistyksen tai uudelleenkäynnistyksen yhteydessä.

PÄIVITYS: Apple on nyt lisännyt UseKeychain -vaihtoehdon avoimiin SSH-määritysvaihtoehtoihin ja pitää myös ssh-add -A -ratkaisua.

MacOS Sierra 10.12.2: sta alkaen Apple on lisännyt UseKeychain -määritysvaihtoehdon SSH-määrityksiin. Man -sivun tarkistaminen ( man ssh_config -palvelun kautta) näyttää seuraavat tiedot:

  Käytä avaimenperää
        Määrittää macOS: ssa, pitäisikö järjestelmän etsiä
        salasanat käyttäjän avaimenperässä, kun yritetään käyttää
        tietty avain. Kun käyttäjä antaa salasanan, tämä
        Vaihtoehto määrittää myös, onko salasana tallennettava
        avainnippuun, kun se on varmistettu oikeaksi.
        argumentin on oltava `` kyllä ​​'' tai `` ei ''. Oletusarvo on `` ei ''.
 

Mikä johtaa siihen, että Apple näkee ratkaisun joko lisäämällä ssh-add -A .bash_profile -ohjelmaan tässä Open Radar -lipussa selitetyllä tavalla tai lisäämällä UseKeychain yhdeksi vaihtoehdoista käyttäjäkohtaisesti ~ / .ssh / config .

Ei toimi minulle;mutta avaimessa on salasana.
@modius:, jos sinulla on pw-suojattu avain, tee `ssh-add -K [polku avaimeen]` ja kirjoita pw pyydettäessä.Avaimenperä tallentaa salasanan ja ssh-add saa sen sieltä sen jälkeen.
Huomaa, että -A on tarkoitettu lisäämään identiteettejä agenttiin käyttämällä mitä tahansa avaimenperääsi tallennettuja salasanoja.Jos sinulla on lisäksi tunnuksia ilman tunnuslauseita, sinun on jätettävä -A-vaihtoehto pois, jotta voit lisätä ne agenttiisi.
Vain lisätäksesi hieman näkyvyyttä tähän, Apple on päivittänyt ssh_config -sivun man-sivun sisällyttämään "UseKeychain" ja "AddKeysToAgent", jotta avain lisätään automaattisesti ssh_config-tiedostosta.Shell-komentosarjoja ei tarvita.Katso alla oleva @mluisbrown-vastaus päivitetyistä tiedoista 10.12.2: lle
@RyanGibbons "Shell-komentosarjoja ei tarvita."Tämä on hyvä vinkki, mutta jos annetaan valinta muokata `~ / .ssh / config` -määritystä lisäämällä 4 määritysriviä verrattuna lisäämällä yksi rivi` ssh-add -K [polku avaimeen] `.kumpikaan ratkaisu ei ole ihanteellinen.Ihanteellinen skenaario on päivitys macOS 10.12.2 -käyttöjärjestelmään, jolloin ei tarvitsisi tehdä * mitään * minkä tahansa * kokoonpanon * muutoksia manuaalisesti tämän perustavan toiminnon saavuttamiseksi.
@JakeGould Saan mitä sanot, pidän itse asiassa siitä mitä he tekevät.Sen sijaan, että salasana tallennetaan automaattisesti avaimenperään ja ladataan se käynnistykseen, ne antavat sinulle hallinnan tietoturvasi suhteen./ kohauttaa olkapäitään
@RyanGibbonsFWIW,katsovirallisetvihjannut[Apple DeveloperRelations](https://openradar.appspot.com/27348363#ag9zfm9wZW5yYWRhci1ocmRyFAsSB0NvbW1lbnQYgICA8JvQ6QoM)tämänvastauksenOpenRadar:**”Voit korjatatämän melkohelpostikomennolla`ssh-add-A` rc-komentosarjassa, jos haluat, että avaimesi ladataan aina. "**` ¯ \ _ (ツ) _ / ¯`
LOL, kiitos siitä - Joten he lisäävät ssh_config-vaihtoehtoja käsittelemään tätä automaattisesti, mutta eivät suosittele niiden käyttöä.
on syytä huomata, että UseKeychain-vaihtoehto ei toimi, jos käytetään ssh: ää, johon on asennettu homebrew
`ssh-add -A` ei toimi Mojavessa (10.14.6 (18G4032)), tuoreella ssh-addilla (/usr/local/Cellar/openssh/8.3p1/bin/ssh-add).Näyttää siltä, että se työskentelee näiden 2 kanssa (käyttäen uutta ssh-addia): sitten `ssh-add -K ~ / .ssh / id_rsa` `ssh-add ~ / .ssh / id_rsa`
#3
+18
Ricardo Sanchez-Saez
2017-03-07 03:36:01 UTC
view on stackexchange narkive permalink

Kuten täällä on selitetty, tämä on suositeltava menetelmä macOS 10.12.2 :

lähtien
  1. Lisää seuraavat rivit ~ / .ssh / config -tiedostoon:

      Host *
        UseKeychain kyllä
        AddKeysToAgent kyllä
    
  2. Kaikki avaimet, jotka lisäät ssh-agenttiin ssh-add / path / to / your / private / key / id_rsa -komennolla, ovat automaattisestilisätty avainnippuun, ja se tulisi automaattisesti vapauttaa uudelleenkäynnistyksen yhteydessä.


Lisään tämän vastauksen, koska:

  • Muissa vastauksissa käsketään lisäämään IdentityFile ~ / .ssh / id_rsa -rivi, mutta tätä vaihtoehtoa ei tarvita avainten automaattiseen lähettämiseen (ja se todella sitoo kyseisen avaimen isäntäosioon.lisäät sen, mihin et halua, jos käytät eri näppäimiä eri hots).
  • Hyväksytyssä vastauksessa mainitaan UseKeychain , mutta se ei riitä säilyttämään ssh-agent -avaimia uudelleenkäynnistyksen jälkeen.
Toinen kohta.Kuinka varma olet?Mitään ei todellakaan tapahdu uudelleenkäynnistyksen yhteydessä, eikä sitä mainita myöskään viitemateriaalissasi.Yllä olevan kokoonpanon kanssa tapahtuu, että SSH-asiakkaasi lataa avaimen agenttiin * ensimmäisen yhteyden muodostamisen yhteydessä (ja se noutaa myös salasanan avainnipusta), jolloin avain pysyy ladattuna.Voit vahvistaa tämän lauseen luetteloimalla avaimet heti uudelleenkäynnistyksen jälkeen `ssh-add -L`: n kautta, ja se ilmoittaa` `Agentilla ei ole identiteettejä ''.Mikään ei ole siellä, ennen kuin muodostat yhteyden.`AddKeysToAgent` ei säilytä avaimia uudelleenkäynnistyksen välillä millään tavalla!
#4
+16
Jirsbek
2016-10-06 03:36:54 UTC
view on stackexchange narkive permalink

Olen kirjoittanut lyhyen viestin tästä aiheesta, mikä voi auttaa sinua.

Ratkaisu on kutsua ssh-add -A -komentoa jokaisen käynnistyksen yhteydessä.

Lisää vain .plist -tiedosto seuraavan sisällön kanssa polkuun ~ / Library / LaunchAgents / tai luo tiedosto Lingon -sovelluksella:

  <? xml version = "1.0" encoding = "UTF-8"? >
<! DOCTYPE plist PUBLIC "- // Apple // DTD PLIST 1.0 // FI" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version = "1.0" >
<dict>
    <key>Label< / key>
    <string>ssh-add-a< / kieli>
    <key>ProgramArgumentit< / key>
    <array>
        <string>ssh-add< / merkkijono>
        <-merkkijono>-A< / kieli>
    < / array>
    <key>RunAtLoad< / key>
    <true / >
< / dict>
< / plist>

<! - @@@@ LingonWhatStart: ssh-add -A @@@@ LingonWhatEnd -->
 
#5
+8
Ben
2017-01-26 16:22:32 UTC
view on stackexchange narkive permalink

MacOS 10.12.2: sta lähtien voit käyttää UseKeychain -vaihtoehtoa. Lue lisää täältä tai etsi man ssh_config .

  Käytä avaimenperää
         Määrittää macOS: ssa, pitäisikö järjestelmän etsiä salasanoja käyttäjän avainnipusta
         kun yrität käyttää tiettyä avainta.Kun käyttäjä antaa salasanan, tämä
         Vaihtoehto määrittää myös, pitäisikö salasana tallentaa avaimenperään heti, kun se on saatu
         on todettu oikeiksi.Argumentin on oltava '' kyllä '' tai '' ei ''.Oletusarvo on `` ei ''.
 

S Tee näin vain seuraavasti:

echo "UseKeychain yes" >> ~ / .ssh / config

Käyttämällä `>>` on vaarassa, jos syötät komennon useita kertoja.Parempi tehdä tiedostosta manuaalinen versio [mluisbrown answer] (https://apple.stackexchange.com/a/264974/62697) tai [ChrisJF vastaus] (https://superuser.com/a/1163862) kuvaamalla tavalla./ 214362).
Olet oikeassa siellä :-)
#6
+5
Infinity
2016-11-03 10:57:10 UTC
view on stackexchange narkive permalink

Minulla oli tämä ongelma aiemmin ja olen löytänyt tavan ohittaa se.Loin juuri config -nimisen tiedoston ~ / .ssh -kansioon, johon olen lisännyt seuraavat rivit:

  Isäntä github.com
Isäntänimi github.com
Identiteettitiedosto ~ / .ssh / github
Ainoastaan kyllä
 

En ole varma miksi, mutta Host ja HostName ovat molemmat tärkeitä.Minun tapauksessani, jos yhtä heistä ei ollut läsnä, ratkaisu ei toiminut.

Sitten tein juuri ssh-add -K ja se toimi myös uudelleenkäynnistyksen jälkeen.

Host on käyttäjän määrittämä nimi / aliaksesi tietylle palvelimelle ja rajaa merkinnät palvelinta kohden: tyyliltään on mukavaa sisenyttää isäntäkohdan rivejä.HostName osoittaa palvelimen verkon osoitettavan nimen, kuten github.com, mutta voit käyttää myös IP-osoitetta.Isännän ja isäntänimen ei tarvitse olla sama asia, mutta kyllä, ne ovat molemmat olennainen osa ssh-kokoonpanomuotoa.
#7
+5
n1000
2017-06-17 23:02:45 UTC
view on stackexchange narkive permalink

Jos käytät eri versiota ssh: stä (esim. asennettu homebrew: n kautta), yllä olevat ratkaisut eivät toimi heti.Esimerkiksi AddKeysToAgent yes ja UseKeychain yes .ssh / config -tiedostossa eivät tunnista muut kuin Applen ssh-versiot ja aiheuttavat virheen.Sama -A tai -K -vaihtoehdolle ssh -asiakkaalle.

Tämä tarkoittaa, että @mluisbrown: n vastaus ei toimi ollenkaan.Voit käyttää @JakeGould: n vastauksen menetelmää 1 ja lisätä kaikki avaimet .bash_profile -apuohjelman macOS ssh-add -apuohjelmaan.avaimenperä eli

  / usr / bin / ssh-add -A
 

Kuten yllä oleva kommentti mainitsi, joudut ehkä ensin lisäämään avaimen avaimenperään: esim. / usr / bin / ssh-add -K .ssh / github

#8
+4
Fiskabollen
2016-10-11 22:54:18 UTC
view on stackexchange narkive permalink

Huomasin, että ssh-add -K antoi minulle vaihtoehdon illegal - K. Tämä johtui siitä, että ssh-add oli outo versio, joka tuli tiedostosta / usr / local / bin (Brew asensi?).Pystyin lisäämään avaimen käyttämällä erityistä ssh-add-tiedostoa, joka sijaitsee / usr / bin:

  / usr / bin / ssh-add -K ~ / .ssh / id_rsa
 
tämä toimi minulle, kun en ole toiminut varhaisessa iässä.
#9
+2
chim
2017-02-27 20:10:31 UTC
view on stackexchange narkive permalink

Muutetaan ~ / .ssh / config-tiedostoa lisäämään UseKeyChain kaikille isännille riittää pysäyttämään tämän toistuvan painajaisen;)

  Host *
 UseKeychain kyllä
 

Jos tiedosto on tyhjä tai sitä ei ole olemassa, luo ja / tai lisää yllä olevat määritykset.

#10
+2
Matthias Bohlen
2018-08-06 21:41:03 UTC
view on stackexchange narkive permalink

Päivitin Mac OS X Sierraan (10.12.6).Voisin siirtyä muihin isäntiin, mutta en github.com-sivustoon.

Tämän minun piti lisätä kohtaan ~ / .ssh / config:

  PubkeyAcceptedKeyTypes ssh-dss, ssh-rsa
 

Muutoksen jälkeen voisin käyttää githubia kuten aiemmin.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...