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

72

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

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

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

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

ssh -p 2222 username@domain

ele me pergunta 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

O 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 eu deveria enviar o arquivo para o meu diretório pessoal remoto (em vez de root), como:

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

mas quando eu faço isso e pressiona "Enter" nada acontece, como se o shell estivesse esperando por mais entrada.

Resumo dos meus problemas:

  • cp: nenhum arquivo ou diretório desse tipo
  • shell "preso" em ~ /

Alguma sugestão?

    
por dragonmnl 17.02.2014 / 16:58

8 respostas

90

Você precisa executar o comando scp da máquina local, não do controle 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á estiver logado na máquina remota e quiser copiar do seu local, será necessário garantir que sua máquina local esteja acessível pela Internet e tenha ssh configurado. Eu não acho que isso é o que você está depois, mas se for, basta executar isso a partir do controle remoto:

username@domain $ scp dragonmnl@local:/path/to/file.ext ~/
    
por 17.02.2014 / 17:13
21

Eu forneço dois métodos de up / down load file entre máquinas remotas e locais (eu uso o Mac air):

Neste caso, quero subir / descer "11.jpeg" entre local e remoto:

1.

Copy files on service to local dir: You must be in local bash terminal to conduct this command, not when you are in ssh!

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

copy files in local dir to remote service : also you must be in local bash terminal

scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx
  1. Para atingir a mesma intenção quando você está efetuando login no SSH , primeiro é necessário definir "Preferências do sistema > compartilhamento > login remoto > todos os usuários (não tenho certeza se você deve definir" todos os usuários ", mas funciona nesta situação)" o Mac irá dizer-lhe "Para fazer login remotamente neste computador, digite: ssh username @ xxxxxx, digite o comando abaixo:

    nome de usuário do scp @ domain: /home/xxx/xxx/11.jpeg nome de usuário @ xxxxxx: / Users / username / Desktop /

Este comando acima é para fazer o download do arquivo do remoto para o local quando você está efetuando login no ssh, apenas altere o caminho quando quiser fazer o upload do arquivo.

    
por 20.10.2016 / 22:05
3

Se você estiver executando esse comando scp na máquina remota, ele procurará file.ext como um arquivo "local", ou seja, na máquina remota.

Para copiar um arquivo do computador remoto para o local, use scp -P 2222 username@domain:dir/file.ext localdir (supondo que file.ext esteja em ~/dir no computador remoto, como no seu exemplo). Se você executar scp na máquina remota, inverta "local" e "remoto".

    
por 17.02.2014 / 17:06
2

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 a pasta the_file para ~/ no controle remoto.

Descompacte o arquivo:

$ unzip the_zip_file.zip -d destination_folder
    
por 10.07.2018 / 10:04
0

Solução para copiar arquivos de Linux client para Linux Server

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

  2. Se não instalar OpenSSH usando %código% link

  3. Reinicie seu servidor e verifique se sudo apt-get install openssh-server openssh-client está em execução usando sshd

  4. Se você precisar, pode configurar seu arquivo ps aux | grep sshd , mas não é necessário para configurações simples

  5. verifique se as portas estão abertas usando /etc/ssh/sshd_config netcat

  6. Para copiar arquivos de um cliente nc -v -z 127.0.0.1 22 para um cliente Linux use scp da seguinte forma Linux

  7. Para verificar se o arquivo foi copiado, use scp ~/filename.md [email protected]:~/folder/filename.md e forneça sua senha.

Solução para copiar arquivos de ssh [email protected] para 'Windows

  1. Existem vários clientes para executar servidores SSH no Windows, como OpenSSH do MS

    MobaSSH

    Servidor SSH Bitvise

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

    netsh advfirewall firewall adicionar nome da regra="Porta SSH 22" dir = em ação = permitir protocolo = localidade UDP = 22

    netsh advfirewall firewall adicionar nome da regra="Porta SSH 22" dir = out action = permitir protocolo = UDP localport = 22

    netsh advfirewall firewall adicionar nome da regra="Porta SSH 22" dir = em ação = permitir protocolo = TCP localport = 22

    netsh advfirewall firewall adicionar nome da regra="Porta SSH 22" dir = out action = permitir protocolo = TCP localport = 22

     

    netsh advfirewall define o estado de todos os perfis desativado

  3. Comparações desses servidores:

    Servidor SSW Bitvise

    1. Fornece quase próximo do prompt nativo Linux client , cmd prompt, autocompletar

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

    3. A personalização do usuário para necessidades simples é 0. Comecei com isso dentro 2 minutos, depois de ter gasto muito tempo tentando obter powershell e MobaSSH para trabalhar.

    4. Para copiar arquivos usando o uso do scp: OpenSSH

    5. Gratuito para uso pessoal, US $ 99 para uso profissional. Por causa de tantos características e grande integração, o preço vale bem o dinheiro

    MobaSSH:

    1. fornece um shell linux no windows, onde comandos simples do linux como trabalho scp ~/filename.md [email protected]:/C/Users/username/filename.md , ls , cp etc, semelhante a find

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

    3. O suporte a Unicode é ruim. A codificação não está correta. Por exemplo, se você tente iniciar powershell interpretor, ele irá falhar. Você vai precisar alterar a codificação manualmente usando ( link ): %código% %código% e, em seguida, iniciar o prompt do Python

    4. O melhor do MobaSSH é que ele tem uma forma muito simples user-interface e Python and chcp 65001 e bem integrados. Então vai trabalhar para casos de uso simples

    5. Para copiar arquivos de um cliente set PYTHONIOENCONDING=utf-8 para um servidor scp em execução ssh : use %código% Isso ocorre porque Linux é baseado em Windows e suas unidades são mapeado da mesma forma que MobaSSH -s unidades são mapeadas.

    Use as VMs da Microsoft com o OpenSSHv6.7 instalado link , O OpenSSHv6.7 já está instalado.

    1. É muito buggy, e você precisará personalizá-lo muito.

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

    3. Ele deixará espaços em branco quando você estiver movendo o cursor no terminal

    4. O Python não funciona

    5. Versões posteriores do OpenSSH podem ter melhorado. Além disso MS parece disponibilizar o OpenSSH via scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md link

por 12.03.2018 / 02:04
0

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 eu quero destacar aqui é que devemos sempre adicionar que :~/

    
por 29.11.2018 / 16:52
-1

Se acontecer de você estar no OSX ...

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

Eu recebi o seguinte erro:

ssh: local: node name or service name not known

Solução

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

‘System Preferences’ --> ‘Internet & Networking’ --> ‘Sharing’ --> ENABLE ‘Remote Login’

Isso, então, forneceu o nome de usuário @ ip address.

    
por 27.01.2015 / 19:42
-1

Eu tive esse mesmo problema hoje no MAC.

Digite o seguinte comando:

scp /local-file-path/ /-remote-location-path/
    
por 13.04.2018 / 09:58

Tags