Pergunta

Primeiro de tudo, eu estou bem ciente de que existem muitas das questões relacionadas com este tema. Tenho lê-los, mas ainda conseguia descobrir uma resposta apropriada para a minha situação.

Gostaria de scp toda a dir ~/cs###/assign1 de local para casa dir escola com um script shell. A minha pergunta é, existe uma maneira no meu script que esperar para a senha rápida, e em seguida, simular eventos placa chave para 'tipo' na minha senha?


aqui é um guia realmente detalhado de como configurar a tecla

Foi útil?

Solução

As chaves SSH não é permitido? Isso seria uma solução melhor.

Outras dicas

Use "sshpass"!

#!/bin/bash
sshpass -p "password" scp -r /some/local/path user@example.com:/some/remote/path

Eu não acho que você pode facilmente fazer isso. O que você pode fazer é usar autenticação de chave pública em seu lugar.

Algo ao longo destas linhas

ssh-keygen -t rsa
ssh school mkdir .ssh/
cat ~/.ssh/id_rsa.pub | ssh school "cat >>.ssh/authorized_keys"

(ou dsa).

Mas hey, não é serverfault, não é? ; -)

Considere o uso de chaves ou uma biblioteca externa.

Eu não acho que é possível de outra maneira (espero não me engano), uma vez que impõe intrusão força bruta automática e sniffing de senhas.

Existem bibliotecas que podem fazer o que quiser (usar o protocolo SFTP, não chamando scp), como libssh .

Mais uma vez, eu recomendo chaves.

Eu concordo que você deve usar chaves. Mas esperar pode automatizar o aspecto interativo do processo, se você quiser codificar sua senha em um script de texto simples arquivo.

Se você pode montar o diretório de uma máquina Windows (por exemplo, através de AFS, NFS ou SMB que laboratórios do Windows do meu universitários tudo fez), você pode usar pscp com o interruptor -pw.

Por que não usar a opção "-r" para copiá-lo de forma recursiva? Ou use rsync vez?

Você também pode usar autenticação de chave pública, que não requer ajuda em sua extremidade, desde que você tenha uma conta de usuário real. Consulte este

Você não diz qual plataforma você está usando em casa e na escola. Assumindo Linux, Cygwin ou OS / X você tem várias opções:

    autenticação de chave
  1. Pública se não tenha sido desligado no servidor
  2. ssh-agent e ssh-add para digitar sua senha uma vez por sessão

Para a opção (1), você faria

  1. gerar um par de chaves em casa usando , Sem senha no keygen-ssh a chave privada. Note-se que omitindo uma senha provavelmente não é uma boa idéia se outras pessoas usam o mesmo computador, mas seu objetivo era chegar em torno de ter que digitar a senha.
  2. carregar a chave pública para a sua escola conta e colocá-lo em ~ / .Ssh / authorized_keys
  3. Use scp com o "-i identityfile" opção, onde identityfile é o caminho completo para a sua chave privada. Ou, adicione uma entrada para .ssh / config (veja as páginas man)

Para a segunda opção, ssh-agente permite armazenar em cache sua senha em um local de processo de uma vez por sessão. Você definir um tempo de expiração

Como muitos já disseram que o uso de chaves SSH seria a maneira mais segura e melhor. Se alguém ainda está se perguntando ao redor e à procura de ajuda, no Ubuntu ajuda lá é um rápido e direto forma para chaves usar o SSH.

Depois de configurar ssh-keygen como explicado aqui , você pode fazer

scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

onde id_rsa é a chave locais geradas na configuração ssh-keygen.

Se você quiser diminuir a digitação de cada vez, você pode modificar seu arquivo .bash_profile e colocar

alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

Depois de seu source ~/.bash_profile Do terminal. Depois se você digitar remote_scp em seu terminal deve executar o comando scp sem senha.

Eu não encontrei nenhuma maneira de fazer isso em nossos sistemas automaticamente - eu ssh em um dispositivo, e em seguida, ssh para o próximo dispositivo, e em ambos, eu não posso instalar qualquer outro software. Então eu só posso usar comandos de script shell existentes. I pode copiar todos os arquivos de um tipo com, como * .png, ou um por um no meu arquivo de script, ter de introduzir a senha para cada arquivo individual. A única coisa que eu fiz foi útil foi a digitar a senha em um arquivo, cortá-la, e ser capaz de colá-lo em cada prompt para cada arquivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top