Otázka: Byl mi přidělen úkol automatizovat přenosy souborů mezi vzdálenými počítači pomocí scp. Nejsem si ale jistý, jak zadat heslo jako parametr do scp příkaz. Jeden z můj přítel navrhl používat ‘sshpass ‘ (může brát heslo jako argument), ale můj šéf říká „sshpass není správný způsob, jak to udělat a není to bezpečné “. Co navrhujete?
– Ravi
Odpověď:
Ravi, váš přítel má odpověď na vaši otázku, ale váš šéf má pravdu . „sshpass ‘ obslužný program bere heslo jako argument, ale je méně bezpečný. Místo toho byste pro zabezpečené přenosy souborů měli používat klíče SSH.
Vyzkoušíme obě metody a uvidíme, která je bezpečnější.
Pomocí sshpass
Nainstalujte ‘sshpass ‘ pomocí níže uvedeného příkazu:
$ yum install sshpass Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package sshpass.x86_64 0:1.05-1.el5 set to be updated --> Finished Dependency Resolution
Po instalaci jej můžete používat následovně:
sshpass -p "password" scp file.txt user@remote_machine:
Upozornění: Vzhledem k tomu, že heslo je uvedeno v příkazu, mohou ho zobrazit ostatní uživatelé přihlášení k počítači pomocí „w ‘příkaz. Abyste tomu zabránili, můžete heslo uložit do souboru a předat soubor jako argument příkazu (viz níže):
$ echo "password" > passfile.txt
$ chmod 600 passfile.txt
$ sshpass -f passfile.txt scp file.txt user@remote_machine:
Upozornění: Heslo lze stále dohledat ze souborů protokolu nebo historie.
Verdikt tedy zní, že „sshpass“ není bezpečná metoda . Místo toho, jak navrhl váš šéf, byste měli používat zabezpečené klíče SSH pro připojení bez hesla.
Použití zabezpečených klíčů SSH
Vygenerujte ssh klíče na zdrojovém počítači, jak je uvedeno níže:
[machine-A ]$ ssh-keygen -t rsa
[machine-A ]$ scp ~/.ssh/id_rsa.pub user@machine-B:.ssh/authorized_keys
To je vše, máte nastaveno ssh připojení bez hesla mezi strojem-A a strojem-B. Zkuste přenést soubory bez nutnosti zadávat heslo:
$ scp file.txt user@remote_machine:
Hotovo! Ravi, někdy mají ŠÉFOVÉ pravdu 🙂