Tworzę mały skrypt kopii zapasowej, używając sshfs
:
sshfs backup_user@target_ip:/home /mnt/backup
Czy istnieje sposób na dołączenie hasła do tego polecenia?
A może istnieje inne rozwiązanie do przesyłania plików, w którym można podać hasło logowania inne niż FTP / SFTP?
Odpowiedzi:
-o password_stdin
nie działają na wszystkich systemach, na przykład na FreeBSD. itp.Możesz także użyć
expect
Interpretera, powinien on działać z sshfs i powinien załatwić sprawę.Innym rozwiązaniem byłoby
sshpass
na przykład założenie, że tworzona jest kopia zapasowa katalogu / var / wwwTworzenie kopii zapasowej:
przesyłanie pliku kopii zapasowej na serwer kopii zapasowej
Prześle więc katalog z dzisiejszą kopią zapasową.
Jednak , jak powiedziano wyżej, najlepszym (bezpiecznym i prostym) sposobem byłoby użycie pary kluczy ssh
Jedyną niedogodnością byłoby to, że trzeba przejść proces generowania klucza raz na każdym serwerze musisz sparować, ale jest to lepsze niż utrzymywanie hasła w formacie zwykłego tekstu na wszystkich serwerach, dla których chcesz utworzyć kopię zapasową :),
Generowanie pary kluczy we właściwy sposób
Na serwerze lokalnym
Na zdalnym serwerze
Przesyłanie wygenerowanych kluczy publicznych na zdalny serwer
Ustaw uprawnienia na zdalnym serwerze
Zaloguj sie
Włączanie protokołu SSH v2
włączanie autoryzacji klucza publicznego w sshd
Jeśli StrictModes jest ustawiony na tak w / etc / ssh / sshd_config, to
źródło
Zgodnie z instrukcją istnieje opcja
-o password_stdin
która może umożliwić odczytanie hasła ze standardowego wejścia, co może być prawdopodobnie przekierowaniem. Nigdy go nie używałem, więc spekuluję.To powiedziawszy, zdecydowanie odradzam takie rozwiązanie, które z natury jest niepewne.
ssh
działa bardzo dobrze z systemem kluczy prywatnych / publicznych. To jest proste i bezpieczne. Nie trzeba wprowadzać hasła ani pisać go wyraźnie w skrypcie powłoki. Po prostu wciśnij swój klucz publiczny na serwerze i możesz od razu się połączyć.źródło
printf "my_password\n" | sshfs username@hostname:/remote_fs $HOME/local_dir
-o password_stdin
opcji.printf "my_password\n" | sshfs -o password_stdin user@hostname:/ $HOME/local_dir
PS Jestem na Debian Buster PPS To działa, ale wyświetla monit o podanie hasła:sshfs -o password_stdin user@hostname:/ $HOME/local_dir
Piping
"sshfs password"
z<<<
do-o password_stdin
działa na bash:źródło
Opcja „-o password_stdin” umożliwia przesyłanie hasła w potoku.
To powiedziawszy, klucze są lepszą opcją, chyba że twój usługodawca nie pozwala ci ich używać do sftp. (Jest to jedna z istotnych awarii WP Engine).
źródło
Zamontuj skrypt:
Odmontuj:
źródło
należy pamiętać, że jeśli korzystasz z tej
-o password_stdin
opcji, może się wydawać, że nie działa, ponieważ sshfs zapyta, czy połączyć się z hostem, czy nie (jeśli łączysz się z nim po raz pierwszy i nie jest dodawany do znanego pliku hosts). Jeśli uruchamiasz go wsadowo, nigdy nie zobaczysz, że sshfs pyta. Obejściem tego problemu jest:-o StrictHostKeyChecking=no
opcję do sshfs lubźródło
Automatyczny skrypt do połączenia sftp z sshfs
źródło