Use scp para transferir um arquivo do diretório local X para o diretório remoto Y

Eu dei uma olhada em outras questões aqui e em vários tutoriais de “uso de scp” em Internet, mas não consigo descobrir o que está errado.

Estou usando o Linux Mint e estou tentando descobrir como scp funciona.

Eu tenho um arquivo file.ext (no meu computador) no diretório / home / name / dir /

Eu me conecto uma máquina remota usando ssh , como:

ssh -p 2222 username@domain 

ele me pede a senha e o shell exibe:

username@domain ~ $ 

agora, se eu emitir o comando (antes de executar o ssh, eu estava no diretório local / home / name / dir ):

scp -r -P 2222 file.ext username@domain 

saída é:

cp: cannot stat ‘file.ext’: No such file or directory 

Mesmo resultado se em vez de file.ext eu escrever o caminho completo

scp -r -P 2222 /home/name/dir/file.ext username@domain 

Além disso, o administrador do servidor me disse que devo enviar o arquivo para meu diretório inicial remoto (em vez de root), como:

scp -r -P 2222 file.ext username@domain:~/ 

mas quando eu faço isso e pressiono “Enter”, nada acontece, como se o shell estivesse esperando por novas entradas.

Resumo dos meus problemas:

  • cp: tal arquivo ou diretório não existe
  • shell “preso” em ~ /

Alguma sugestão?

Comentários

  • it ‘ não está claro se o seu problema é relacionado apenas a estar na máquina errada … você poderia prefixar cada comando com o host em que está executando? por exemplo. localuser@machineA: ssh -p 2222 username@domain (para indicar que você está executando o comando ssh como usuário local na máquinaA)
  • ao usar scp, o O lado remoto sempre deve conter os dois pontos (por exemplo, remotehost:/tmp), caso contrário, fará apenas uma cópia comum (scp /tmp/foo.txt example.com irá copiar /tmp/foo.txt em um arquivo local example.com)
  • remover o -r sinalizador, já que não é necessário para copiar arquivos únicos (ele ‘ é usado para copiar diretórios recursivamente )
  • Você está emitindo o comando scp dentro da sessão sshe ? Faria sentido se você estivesse na máquina local.

Resposta

Você precisa executar o scp comando da máquina local, não no remoto. Você não precisa do ssh:

dragonmnl@local $ scp -P 2222 file.ext username@domain:~/ 

Você também não precisa do -r:

 -r Recursively copy entire directories. 

Se você já está logado na máquina remota e deseja copiar de seu local, você precisa fazer certifique-se de que sua máquina local está acessível através da Internet e ssh configurada. Não creio que seja isso que você procura, mas se for, execute-o remotamente:

username@domain $ scp dragonmnl@local:/path/to/file.ext ~/ 

Comentários

  • obrigado. o problema era que eu estava tentando executar scp dentro da sessão ssh. agora funciona!

Resposta

Eu forneço dois métodos de upload / download de arquivos entre a máquina remota e local (eu uso o Mac air):

Neste caso, eu desejo aumentar / diminuir 11.jpeg entre local e remoto:

  1. Copie os arquivos no serviço para o diretório local: você deve estar no terminal bash local para conduzir este comando, não quando estiver no ssh!

    scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/ 

    copiar arquivos no diretório local para serviço remoto: você também deve estar no terminal bash local

    scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx 
  2. Para alcançar a mesma intenção quando você estiver fazendo login no SSH , você deve primeiro definir “ Preferências do sistema > compartilhamento > login remoto > todos os usuários (não tenho certeza se você deve definir para ” todos os usuários “, mas funciona nesta situação) ”o Mac dirá a você ” Para fazer login neste computador remotamente, digite:

    ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/** 

Este comando acima é para baixar o arquivo de remoto para local quando você estiver logando no ssh, apenas altere os dois caminhos quando quiser fazer o upload do arquivo.

Comentários

  • Por fim, acho que Filezilla é provavelmente o mais conveniente no trabalho diário ~~

Resposta

Use o comando scp

Se você deseja transferir uma pasta, apenas zip primeiro, podemos unzip mais tarde.

No seu computador, execute isto:

$ scp your_path_to_the_file/the_file [email protected]:~/ 

Aqui, root é sua conta e 10.145.198.100 é o endereço IP do servidor remoto. Vamos copiar the_file para a pasta ~/ no remoto.

Descompacte o arquivo:

$ unzip the_zip_file.zip -d destination_folder 

Comentários

  • Por que root ainda tem acesso SSH na máquina remota? Isso ‘ é muito inseguro. Melhor usar um uso comum e então sudo fazer o que o root tem que fazer naquela máquina.

Resposta

Se você estiver executando este comando scp na máquina remota, ele está procurando file.ext como um arquivo “local”, ou seja, na máquina remota.

Para copiar um arquivo da máquina remota para a local, use scp -P 2222 username@domain:dir/file.ext localdir (assumindo que file.ext está em ~/dir no computador remoto, como no seu exemplo) . Se você executar scp na máquina remota, reverta “local” e “remoto”.

Comentários

  • O OP deseja copiar do local para o remoto, veja o título do OP ‘ s.
  • Ops, acho que você ‘ está certo. Mas ele ‘ aparentemente está fazendo ao contrário …

Resposta

Apenas uma pequena contribuição, talvez possa ajudar iniciantes como eu: o caminho para o diretório remoto deve ser escrito assim: username@domain:~/remote_directory

O que quero destacar aqui é que devemos sempre adicionar que :~/

Resposta

Solução para copiar arquivos do cliente Linux para o servidor Linux

  1. Verifique se sshd está sendo executado em seu servidor usando: ps aux | grep sshd

  2. Caso contrário, instale OpenSSH usando sudo apt-get install openssh-server openssh-client https://www.tecmint.com/install-openssh-server-in-linux/

  3. Reinicie seu servidor e verifique se sshd está sendo executado usando ps aux | grep sshd

  4. Se precisar, você pode configurar seu /etc/ssh/sshd_config arquivo, mas não é necessário para configurações simples

  5. verifique se o As portas são abertas usando netcat: nc -v -z 127.0.0.1 22

  6. Para copiar arquivos de um Linux cliente para um Linux cliente use scp da seguinte maneira scp ~/filename.md [email protected]:~/folder/filename.md

  7. Para verificar se o arquivo foi copiado, use ssh [email protected] e forneça sua senha.

Solução para copiar arquivos do cliente Linux para Windows

  1. Existem vários clientes para executar SSH servidores no Windows, como:

  2. Instale um dos servidores acima e verifique se a porta 22 está aberta usando

    netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=UDP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=UDP localport=22 
    netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=TCP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=TCP localport=22 
    netsh advfirewall set allprofiles state off 
  3. Comparações desses servidores:

    Servidor SSH Bitvise

    1. Fornece quase próximo ao prompt cmd nativo, prompt powershell, preenchimento automático

    2. Fornece recursos adicionais para personalização, se você precisar de uso avançado

    3. A personalização do usuário para necessidades simples é 0. Comecei a fazer isso em 2 minutos, depois de ter gasto muito tempo tentando fazer com que MobaSSH e OpenSSH funcionem.

    4. Para copiar arquivos usando scp use: scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. Grátis para uso pessoal, $ 99 para uso profissional. Por causa de tantos recursos e ótima integração, o preço vale bem o dinheiro.

    MobaSSH:

    1. fornece um Linux shell no Windows em que comandos simples do Linux, como ls, cp, find, etc., trabalho, semelhante a MINGW64

    2. você pode acessar cmd e powershell diretamente digitando cmd ou powershell

    3. O suporte a Unicode é ruim. A codificação não está correta. Por exemplo, se você tentar iniciar o Python interpretador, ele irá travar. Você precisará alterar a codificação manualmente usando ( https://stackoverflow.com/a/12834315/4752883 ): chcp 65001 set PYTHONIOENCONDING=utf-8 e, em seguida, inicialize o prompt do Python

    4. A grande vantagem do MobaSSH é que ele tem uma interface de usuário muito simples e scp e ssh e bem integrado. Então, funcionará para casos de uso simples

    5. Para copiar arquivos de um cliente Linux para um servidor Windows executando MobaSSH: use scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md Isso ocorre porque MobaSSH é baseado no Cygwin e suas unidades são mapeadas da mesma maneira cygwin – s unidades são mapeadas.

    Use VMs da Microsoft com OpenSSHv6.7 instalado de https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 já está instalado.

    1. É muito bugado e você precisará personalizá-lo pesadamente.

    2. A conclusão do comando não funciona

    3. Deixará espaços em branco quando você mover o cursor no terminal

    4. Python não funciona

    5. Versões posteriores do OpenSSH podem ter melhorado. Além disso, a MS parece disponibilizar o OpenSSH via ” Recursos opcionais ” https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Resposta

Se você estiver no OSX …

Quando tentei executá-lo com username @ local: / file_directory …

Recebi o seguinte erro:

ssh: local: node name or service name not known 

Solução

No meu Mac, tive que fazer o seguinte para configurar ssh local:

Preferências do sistema -> Internet & Rede -> Compartilhamento -> ATIVAR Login remoto

Isso forneceu o nome de usuário @ endereço ip.

Resposta

Tive o mesmo problema hoje no MAC.

Digite o seguinte comando:

scp /local-file-path/ /-remote-location-path/ 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *