Hoe u SSH-aanmeldingen kunt automatiseren als u een wachtwoord moet gebruiken

0
161

SSH heeft geen gemakkelijke manier om wachtwoorden te verzenden via standaardinvoer, waardoor het is moeilijk te automatiseren. Hoewel het niet ideaal is voor de beveiliging, kun je SSH-wachtwoordverificatie in bash-scripts automatiseren met behulp van het sshpass-hulpprogramma.

Voordat we beginnen, wordt het gebruik van geautomatiseerde wachtwoorden voor SSH om een ​​reden als een slechte gewoonte beschouwd . In bijna alle gevallen is het beter om een ​​SSH-sleutel te gebruiken, die we hieronder zullen laten zien. Wachtwoorden hebben echter het voordeel dat ze gemakkelijker te beheren, onthouden en distribueren naar teamleden zijn. Dat zijn allemaal tegelijkertijd nadelen voor de beveiliging, maar dat is een afweging die u kunt maken.

SSHPass gebruiken

Het reguliere ssh-commando heeft geen –password-vlag, zodat u dit eenvoudig kunt automatiseren. U moet een tool met de naam sshpass installeren om dit expliciet af te handelen. Je kunt het downloaden van de meeste Linux-pakketbeheerders; voor op Debian gebaseerde systemen zoals Ubuntu zou dat zijn:

sudo apt-get install sshpass

Als je sshpass vanuit een scriptbestand gebruikt, kun je dit rechtstreeks doorgeven met de vlag -p , gevolgd door uw standaard SSH-commando:

sshpass -p 'password' ssh user@remote

Dit is echter om een ​​paar redenen geen goede gewoonte:

  • Als het buiten een scriptbestand wordt gebruikt, wordt het wachtwoord in platte tekst zichtbaar voor de Linux-opdrachtgeschiedenis en andere systemen. Andere Linux-gebruikers kunnen het misschien zien.
  • Het kan onduidelijk zijn dat er een wachtwoord is begraven in dit scriptbestand, wat mogelijk kan leiden tot slechte bestandspermissies die het blootleggen.
  • Het kan per ongeluk worden gevolgd in versiebeheer, en staat niet toe dat het wachtwoord dat op de clients wordt gebruikt, kan worden gewijzigd.

Advertentie

Hierdoor moet u het wachtwoord in plaats daarvan in een bestand opslaan. Zorg ervoor dat u de rechten ervoor instelt om ervoor te zorgen dat het niet toegankelijk is voor andere gebruikers.

echo “password” > password_file chmod 600 password_file

Geef dit vervolgens door aan sshpass met -f:

sshpass -f password_file ssh user@remote

In plaats daarvan SSH-sleutels instellen< /h2>

SSH-sleutels hebben de voorkeur voor de meeste systemen. Ze zijn veel langer en ook moeilijker om per ongeluk te lekken, waardoor ze ideaal zijn voor beveiliging. Ze moedigen ook identiteitsgebaseerde authenticatie aan, aangezien SSH-sleutels meestal zijn gekoppeld aan de machine waarop ze zijn gemaakt.

SSH slaat uw openbare sleutel op in ~/.ssh/id_rsa.pub, die het gebruikt voor alle verzoeken. Het is eenvoudig om een ​​nieuw sleutelbestand te genereren:

ssh-keygen

Je moet dit toevoegen aan het ~/.ssh/authorized_keys bestand op de server waarmee je verbinding wilt maken. Er is een ingebouwde SSH-opdracht die dit gemakkelijk voor u kan doen:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

Als dat eenmaal is gebeurd, er wordt niet meer om een ​​wachtwoord gevraagd. U kunt deze sleutel naar andere machines kopiëren, maar meestal is het prima om gewoon meerdere sleutels toe te voegen.

U wilt nog steeds wachtwoordaanmeldingen op de externe server uitschakelen en waarschijnlijk instellen snelheidsbeperking, whitelisting of zelfs tweefactorauthenticatie. U kunt onze handleiding voor het beveiligen van een SSH-toegankelijke machine lezen voor meer informatie.

GERELATEERD: Hoe u uw SSH-server kunt vergrendelen