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 avyum --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 brukssh -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.
- 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.
- 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 passordssh -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
.