SSH-inloggning med lösenord i klartext som parameter? [duplicera]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Den här frågan har redan svar här :

Kommentarer

  • serverfault.com/ frågor / 241588 / …
  • Det säkra sättet är att generera SSH-nyckel med ssh-keygen -t rsa -b 2048 och använda den här nyckeln för att logga in på fjärrservern som alternativ kan du installera " sshpash " och sedan kan du ssh din maskin med följande kommando sshpass -p ' lösenord ' ssh användarnamn @ servernamn
  • Frågan som detta omdirigeras till är inte densamma som den här. Den här ber om ett sätt att starta en interaktiv session.

Svar

På Ubuntu installerar du sshpass paket, använd det så här:

sshpass -p "YourPassword" ssh user@host 

sshpass stöder också överföring av tangentbordets interaktiva lösenord från en fil eller en miljövariabel, vilket kan vara ett mer lämpligt alternativ i alla situationer där säkerhet är relevant. Se man sshpass för detaljerna.

Kommentarer

  • Althought rekommenderas inte och inte en bra praxis detta är exakt svaret på frågan. Överväg att använda nycklar enligt ovan. Men om det ' är en stor teknisk fråga är det den lösning som frågades
  • Jag röstade bara upp svaret. Inte " rationellt varför inte ' t du gör det på det här sättet istället " svarar. Bara svaret. därför röstade jag på dig 🙂
  • Jag don ' t hatar helt sshpass, jag ' använder det tillfälligt. Att använda ' -p ' är dock onödigt och oönskat. Ställ in variabeln SSHPASS först och gör sedan sshpass -e ssh < ssh-args >.
  • @Brad If du har rot i rutan kan du installera sshpass med yum --enablerepo=epel install sshpass.
  • Detta svar fungerar också på Manjaro ( Arch-based).

Svar

Om ditt alternativ är att lägga in ett lösenord i ett skript eller ssh kommandorad eller vanlig textfil, då ”re MYCKET bättre med en ssh nyckel istället. Hur som helst, vem som helst som har tillgång till kontot där ssh klientskriptet är lagrat skulle kunna använda det för att komma in på servern, men åtminstone i fallet med en ssh -nyckel stöder OpenSSH den ordentligt, du ger inte åtkomst på annat sätt än ssh, det återkallas lättare vid behov osv …

Du måste förklara varför du har ett krav att inte använda en ssh-nyckel.

Överväg också att använda ett tvångskommando (command="..." i .ssh/authorized_keys -fil) så att klienten bara har tillgång till att köra kommandot de behöver på servern snarare än ett fullständigt skal.

Kommentarer

  • Fjärrvärden är faktiskt en virtuell dator som används av andra ingenjörer utan resurser som är värda att riskera annat än kopior av testautomatiseringskoden. För diskussionens skull, låt oss säga att den enda åtkomst jag har är att lägga till skriptfilen, inte lägga till ssh-nycklar i ~/.ssh/.
  • Det ' är mycket konstruerad. Ett något mindre konstruerat scenario skulle vara att en vilseledande administratör av servern inaktiverade inloggningar för ssh-nycklar (PubkeyAuthentication no i /etc/ssh/sshd_config). I båda fallen är den bättre lösningen att åtgärda det underliggande problemet som hindrar dig från att göra ssh-nyckelinloggningar. Om det inte går konsultera frågan som Gilles pekade på .
  • @MichaelM du behöver inte lägga till ssh-nycklar i ~/.ssh/. Lägg till nyckeln var du vill och använd ssh -i /path/to/id_rsa
  • Stackexchanges-svaret ska svara på frågan och inte argumentera för att frågan är korrekt. Jag har ett giltigt scenario för detta. Jag måste ställa in min ~/.ssh/authorized_keys i 95 olika rutor. Jag skrev ett skript för att trycka på min authorised_keys-fil automatiskt, men uppmanar fortfarande lösenord. Att ha skriptet för att be om lösenordet en gång i början skulle vara trevligare.
  • Jag håller med flarn2006.Du kan inte säga " den här frågan är dum så här ' är ett svar på en annan fråga eftersom jag tror att den ' är en bättre fråga och jag vet svaret på den ".

Svar

För det första, som de andra respondenterna, rekommenderar jag att du bara använder ssh-tangenter. Men jag antar att personen som kontrollerar servern helt enkelt inte kommer att tillåta dig att använda autentisering av ssh-tangent och du måste använda lösenordsautentisering.

Du kan använda ControlMaster och ControlPath.

Låt A vara den server som du inte kommer att ha tillgång till (tänk kontinuerlig integrationsserver som Bamboo) och C vara fjärrvärden som kör Ubuntu.

Låt nu B vara någon dator som du styr. Om du kan tillhandahåller inte en lämplig B-dator, det här svaret fungerar inte.

  1. Skapa ett nyckelpar och lägg till den offentliga delen i B: s author_keys-fil. Ge A den privata nyckeln. Nu kan du logga in på B från A utan lösenord.
  2. På B manuellt ssh -M -S /tmp/controlpath C och ange ditt lösenord vid uppmaningen. Därefter ska du kunna logga in på C från A utan lösenord ssh -S /tmp/controlpath C.

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

Varje gång du startar om B måste du återupprätta anslutningen ssh -M -S /tmp/controlpath C.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *