Estou criando um pequeno script de backup usando sshfs
:
sshfs backup_user@target_ip:/home /mnt/backup
Existe uma maneira de incluir a senha neste comando?
Ou existe outra solução de transferência de arquivos em que a senha de login pode ser incluída além de FTP / SFTP?
Respostas:
-o password_stdin
não parece estar funcionando em todos os sistemas, por exemplo, freeBSD. etc.Você também pode usar o
expect
Intérprete, ele deve funcionar com sshfs e deve fazer o truque.Outra solução seria
sshpass
, por exemplo, digamos que você esteja fazendo o backup do diretório / var / wwwFazendo backup:
fazendo upload de arquivo de backup para o servidor de backup
Por isso vai fazer upload de diretório com o backup de hoje
Mas ainda assim, como foi dito mais alto, melhor (seguro e simples) caminho seria usar ssh par de chaves
O único inconveniente seria que você tem que passar pelo processo de geração de chaves, uma vez em cada servidor é necessário emparelhar, mas é melhor do que manter uma senha em formato de texto sem formatação em todos os servidores que você deseja fazer backup :),
Gerando um par de chaves da maneira correta
No servidor local
No servidor remoto
Upload de chaves públicas geradas para o servidor remoto
Definir permissões no servidor remoto
Conecte-se
Ativando o Protocolo SSH v2
habilitando a autorização de chave pública no sshd
Se StrictModes estiver definido como yes em / etc / ssh / sshd_config,
fonte
De acordo com o manual, existe uma opção
-o password_stdin
que pode permitir a leitura da senha da entrada padrão, o que provavelmente pode ser um redirecionamento. Eu nunca usei, então estou especulando.Dito isto, aconselho vivamente a essa solução que é inerentemente insegura.
ssh
funciona muito bem com um sistema de chaves públicas / privadas. É simples e seguro. Não é necessário digitar uma senha ou escrevê-la em um script de shell. Basta pressionar sua chave pública no servidor e você poderá se conectar imediatamente.fonte
printf "my_password\n" | sshfs username@hostname:/remote_fs $HOME/local_dir
-o password_stdin
opção.printf "my_password\n" | sshfs -o password_stdin user@hostname:/ $HOME/local_dir
PS eu estou no Debian Buster PPS Isso funciona, mas solicitará uma senha:sshfs -o password_stdin user@hostname:/ $HOME/local_dir
Piping the
"sshfs password"
with<<<
para-o password_stdin
trabalhos no bash:fonte
A opção "-o password_stdin" é o que permite canalizar sua senha.
Dito isto, as chaves são uma opção melhor, a menos que seu provedor de serviços não permita que você as use para sftp. (Essa é uma das falhas notáveis do WP Engine.)
fonte
Script de montagem:
Desmontar:
fonte
uma coisa a ter em mente é que, se você estiver usando a
-o password_stdin
opção, ela pode parecer não estar funcionando porque o sshfs perguntará se deseja se conectar ao host ou não (se é a primeira vez que você se conecta a ele e não é adicionado) para o arquivo hosts conhecido ainda). Se você estiver executando em um lote, nunca verá os sshfs perguntando. As soluções alternativas para evitar isso são:-o StrictHostKeyChecking=no
opção ao sshfs oufonte
Script automático para conectar sftp com sshfs
fonte