Sei que não é recomendado, mas é possível passar a senha do usuário para scp?
Gostaria de copiar um arquivo via scp como parte de um trabalho em lotes e o servidor de recebimento precisa, é claro, de uma senha e, não, não posso alterá-lo facilmente para autenticação baseada em chave.
linux
scp
io-redirection
Argelbargel
fonte
fonte
Respostas:
Você pode criar um script com uma ferramenta como expect (também existem ligações úteis, como o Pexpect for Python).
fonte
Use sshpass :
ou então a senha não aparece no histórico do bash
O acima copia o conteúdo do caminho do host remoto para o seu local.
Instalar:
apt install sshpass
yum install sshpass
port install sshpass
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
fonte
apt-get install sshpass
yum -y install sshpass
sshpass -f
listagens passwdfile` scp [...]. This way, the password won't show up in
ps`, etc. e você pode proteger a senha com permissões de arquivo.basta gerar uma chave ssh como:
copie o conteúdo
~/.ssh/id_rsa.pub
e, finalmente, adicione-o às máquinas remotas~/.ssh/authorized_keys
verifique se a máquina remota tem as permissões
0700 for ~./ssh folder
e0600 for ~/.ssh/authorized_keys
fonte
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_server>
para copiar a chave no servidor remotoSe você estiver se conectando ao servidor pelo Windows, a versão Putty do scp ("pscp") permitirá que você passe a senha com o
-pw
parâmetroIsso é mencionado na documentação aqui.
fonte
pscp -pw 'MyPa$$word' username@servername:/somedir/somefile ~/somedest
(eu odeio usando massa como esta, mas funciona)curl pode ser usado como uma alternativa ao scp para copiar um arquivo e suporta uma senha na linha de comando.
fonte
scp
tem que esperar mais de 30 segundos para que eu digite uma senha, mascurl
funcionou imediatamente.Você pode usar o script 'expect' no unix / terminal
Por exemplo, crie 'test.exp':
execute o script
Espero que ajude.
fonte
Aqui está um exemplo de como você faz isso com a
expect
ferramenta:fonte
Ninguém mencionou, mas o Putty scp (pscp) tem uma opção -pw para senha.
A documentação pode ser encontrada aqui: https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp
fonte
Você pode usar
ssh-copy-id
para adicionar a chave ssh:Se existir:
fonte
Depois de configurar
ssh-keygen
conforme explicado acima, você poderáscp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/
Se você quiser diminuir a digitação toda vez, poderá modificar seu
.bash_profile
arquivo e colocarEntão do seu terminal faça
source ~/.bash_profile
. Depois, se você digitarremote_scp
seu terminal, ele deverá executar oscp
comando sem senha.fonte
verifique se você tem a ferramenta "esperar" antes, se não, faça
# apt-get install expect
crie um arquivo de script com o seguinte conteúdo. (# vi / root / arquivo de script)
spawn scp /path_from/file_name user_name_here@to_host_name:/path_to
expect "password:"
send put_password_here\n;
interact
execute o arquivo de script com a ferramenta "expect"
# expect /root/scriptfile
fonte
Aqui está um exemplo do tipo Linux / Python / Expect de um pobre, baseado neste post do blog: Atualizando shells simples para TTYs totalmente interativos . Eu precisava disso para máquinas antigas nas quais não consigo instalar o Expect ou adicionar módulos ao Python.
Código:
Resultado:
fonte
Uma alternativa seria adicionar a metade pública da chave do usuário ao arquivo de chaves autorizadas no sistema de destino. No sistema do qual você está iniciando a transferência, é possível executar um daemon ssh-agent e adicionar a metade privada da chave ao agente. O trabalho em lotes pode ser configurado para usar o agente para obter a chave privada, em vez de solicitar a senha da chave.
Isso deve ser possível em um sistema UNIX / Linux ou na plataforma Windows usando pageant e pscp.
fonte
Todas as soluções mencionadas acima podem funcionar apenas se você instalou o aplicativo ou se você possui os direitos de administrador para instalar, exceto ou sshpass.
Eu encontrei este link muito útil para simplesmente iniciar o scp em segundo plano.
https://charmyin.github.io/scp/2014/10/07/run-scp-in-background/
fonte
etapas para obter o sshpass Para rhel / centos 6:
fonte: https://community.mapr.com/thread/9040
fonte
Encontrei esta resposta realmente útil aqui .
Não apenas você pode passar a senha para lá, mas também mostrará a barra de progresso ao copiar. Realmente fantástico.
fonte