SSH-pålogging med passord som klar tekst som parameter? [duplikat]

Dette spørsmålet har allerede svar her :

Kommentarer

  • serverfault.com/ spørsmål / 241588 / …
  • Den sikre måten er å generere SSH-nøkkel med ssh-keygen -t rsa -b 2048 og bruke denne nøkkelen til logg inn på den eksterne serveren som alternativ, du kan installere " sshpash " og deretter kan du ssh maskinen din med følgende kommando sshpass -p ' passord ' ssh brukernavn @ servernavn
  • Spørsmålet dette blir omdirigert til er ikke det samme som dette. Denne ber om en måte å starte en interaktiv økt på.

Svar

På Ubuntu, installer sshpass pakke, og bruk den slik:

sshpass -p "YourPassword" ssh user@host 

sshpass støtter også overføring av tastaturinteraktivt passord fra en fil eller en miljøvariabel, noe som kan være et mer passende alternativ i alle situasjoner der sikkerhet er relevant. Se man sshpass for detaljer.

Kommentarer

  • Selv om det ikke anbefales, og ikke god praksis, er dette akkurat svaret på spørsmålet. Vurder å bruke nøkler som nevnt ovenfor. Men hvis det ' er et stort teknisk problem, er dette løsningen som blir spurt
  • Jeg oppstemte bare svaret. Ikke " rasjonelt hvorfor ikke ' t du gjør det på denne måten i stedet " svarer. Bare svaret. Derfor oppstemte jeg deg 🙂
  • Jeg don ' t hater fullstendig sshpass, faktisk ' jeg bruker det på midlertidig basis. Å bruke ' -p ' er imidlertid unødvendig og uønsket. Sett variabelen SSHPASS først, og gjør deretter sshpass -e ssh < ssh-args >.
  • @Brad If du har rot på boksen, kan du installere sshpass ved hjelp av yum --enablerepo=epel install sshpass.
  • Dette svaret fungerer også på Manjaro ( Buebasert).

Svar

Hvis alternativet ditt er å sette et passord i et skript eller ssh kommandolinje eller ren tekstfil, så «re MYE bedre å bruke en ssh -tast i stedet. Uansett, alle som har tilgang til kontoen der ssh klientscript er lagret kunne bruke det for å komme inn på serveren, men i det minste i tilfelle en ssh nøkkel, støtter OpenSSH den riktig, du gir ikke tilgang på andre måter enn ssh, den blir lettere tilbakekalt om nødvendig, etc …

Du må forklare hvorfor du har et krav om ikke å bruke en ssh-nøkkel.

Vurder også å bruke en tvungen kommando (command="..." i .ssh/authorized_keys fil) slik at klienten bare har tilgang til å kjøre kommandoen de trenger på serveren i stedet for et fullstendig skall.

Kommentarer

  • Fjernverten er faktisk en virtuell maskin som brukes av andre ingeniører uten ressurser som er verdt å risikere annet enn kopier av testautomatiseringskoden. For diskusjonens skyld, la oss si at den eneste tilgangen jeg har er å legge til skriptfilen, ikke legge til ssh-nøkler i ~/.ssh/.
  • At ' er veldig konstruert. Et noe mindre konstruert scenario ville være at en misforstått administrator av serveren deaktiverte pålogginger for ssh-nøkler (PubkeyAuthentication no i /etc/ssh/sshd_config). I begge tilfeller er den bedre løsningen å fikse det underliggende problemet som hindrer deg i å gjøre ssh-nøkkelinnlogginger. Hvis ikke, se spørsmålet som Gilles peker på.
  • @MichaelM du trenger ikke å legge til ssh-nøkler i ~/.ssh/. Legg til nøkkelen hvor du vil og bruk ssh -i /path/to/id_rsa
  • Stackexchanges-svaret skal svare på spørsmålet og ikke argumentere for at spørsmålet er riktig. Jeg har et gyldig scenario for dette. Jeg må sette opp ~/.ssh/authorized_keys i 95 forskjellige bokser. Jeg skrev et skript for å trykke min autoriserte_keys-fil automatisk, men ber fortsatt om passord. Å ha skriptet for å be om passordet en gang i begynnelsen, ville være bedre.
  • Jeg er enig med flarn2006.Du kan ikke si " dette spørsmålet er dumt så her ' er et svar på et annet spørsmål fordi jeg tror det ' et bedre spørsmål, og jeg vet svaret på det ".

Svar

Først av alt, som de andre respondentene, anbefaler jeg bare å bruke ssh-nøkler. Men jeg vil anta at personen som styrer serveren rett og slett ikke vil tillate deg å bruke ssh-nøkkelautentisering, og at du må bruke passordgodkjenning.

Du kan bruke ControlMaster og ControlPath.

La A være serveren du ikke har tilgang til (tenk kontinuerlig integreringsserver som Bamboo) og C være den eksterne verten som kjører Ubuntu.

La B nå være en datamaskin du styrer. Hvis du kan ikke gi en passende B-datamaskin, vil dette svaret ikke fungere.

  1. Opprett et nøkkelpar og legg til den offentlige delen i Bs autoriserte_keys-fil. Gi A den private nøkkelen. Nå kan du logge på B fra A uten passord.
  2. På B manuelt ssh -M -S /tmp/controlpath C og skriv inn passordet ditt når du blir bedt om det. Etter det skal du kunne logge på C fra A uten passord ssh -S /tmp/controlpath C.

I skriptet på A kan du skrive ssh B ssh C dostuff.

Hver gang du starter B på nytt, må du gjenopprette forbindelsen ssh -M -S /tmp/controlpath C.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *