ssh klucz z hasłem, z pęku kluczy
pęku kluczy to małe narzędzie, które zarządza ssh-agent w imieniu użytkownika i pozwala na ssh-agent będzie działał po zakończeniu sesji logowania. Przy kolejnych logowaniach pęku kluczy połączy się z istniejącą instancją ssh-agent. W praktyce oznacza to, że hasło należy wprowadzić tylko podczas pierwszego logowania po ponownym uruchomieniu komputera. Przy kolejnych logowaniach używany jest nieszyfrowany klucz z istniejącej instancji ssh-agent. Może to być również przydatne w przypadku zezwalania na uwierzytelnianie bez autoryzacji RSA/DSA w zadaniach cron bez bez-haseł ssh-keys.
Aby włączyć pęku kluczy, zainstaluj go i dodaj coś podobnego do ~ /.bash_profile:
eval keychain --agents ssh --eval id_rsa
Z punktu widzenia bezpieczeństwa, ssh-ident i keychain są gorsze niż instancje ssh-agent, ograniczone do czasu trwania konkretnej sesji, ale oferują wysoki poziom wygody. Aby poprawić bezpieczeństwo pęku kluczy, niektórzy ludzie dodają opcję --clear do ich wywołania keychain ~/.bash_profile. Robiąc to, hasła muszą być ponownie wprowadzone przy logowaniu, jak powyżej, ale zadania cron nadal będą miały dostęp do niezaszyfrowanych kluczy po wylogowaniu użytkownika. Strona wiki pęku kluczy zawiera więcej informacji i przykładów.
Otrzymałem tę informację od;
https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-prompt
Nadzieja to pomaga
osobiście był w stanie automatycznie wprowadzić moje hasło na terminalu uruchomienia w ten sposób: (można oczywiście zmodyfikować skrypt i dopasować go do swoich potrzeb)
edytuj plik bashrc, aby dodać ten skrypt;
Sprawdź, czy agent SSH jest przebudzony
if [-z "$ SSH_AUTH_SOCK"]; następnie exec ssh-agent bash -c "ssh-add; $ 0" echo "Agent SSH obudził" wyjście fi
Powyższa linia rozpocznie skrypt oczekiwać momencie uruchomienia terminala.
./ssh.exp
oto treść tego oczekiwać skrypt
#!/usr/bin/expect
set timeout 20
set passphrase "test"
spawn "./keyadding.sh"
expect "Enter passphrase for /the/path/of/yourkey_id_rsa:"
send "$passphrase\r";
interact
Oto treść mojego skryptu keyadding.sh (należy umieścić zarówno skrypty w katalogu domowym, zazwyczaj/home/user)
#!/bin/bash
ssh-add /the/path/of/yourkey_id_rsa
exit 0
Gorąco sugerują szyfrowanie pa ssword w skrypcie .exp oraz zmiana nazwy tego pliku .exp na coś takiego jak term_boot.exp lub cokolwiek innego ze względów bezpieczeństwa. Nie zapomnij o utworzeniu plików bezpośrednio z terminalu za pomocą nano lub vim (np. nano ~/.bashrc | nano term_boot.exp
), a także chmod +x script.sh
, aby był on wykonywalny. Użyteczna byłaby także opcja chmod +r term_boot.exp
, ale musisz dodać sudo przed ./ssh.exp do pliku bashrc. Musisz więc wpisać swoje hasło sudo przy każdym uruchomieniu terminalu. Dla mnie jest to wygodniejsze niż hasło, bo pamiętam hasło administratora (sudo) przy palenisku.
Ponadto, jest to inny sposób, aby to zrobić, myślę; https://www.cyberciti.biz/faq/noninteractive-shell-script-ssh-password-provider/
Z pewnością zmieni moją metodę na tę, kiedy będę miał czas.
Naprawdę powinniśmy przestać promować oczekiwanie jako sposób automatyzacji ssh. Ssh celowo sprawia, że monity te są trudne do zautomatyzowania, aby skłonić nas do skorzystania z właściwych rozwiązań: flagi linii poleceń pomijają potwierdzenia i klucze publiczne/prywatne, aby wyeliminować monity o hasła. –
To ideał, ale prawdziwy świat często nie jest idealny. Jeśli chodzi o postawione pytanie, jest to typowy sposób na zrobienie tego.Jeśli używałeś kluczy, prawdopodobnie też chciałbyś podać hasło do swojego klucza, a wtedy możesz znaleźć się w tej samej sytuacji. Oczywiście, możesz 'ssh-agent',' keychain', itp., Ale czasami są powody, które są niewygodne lub niepraktyczne. – jjlin