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
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:
-
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
-
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ãosudo
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
-
Verifique se
sshd
está sendo executado em seu servidor usando:ps aux | grep sshd
-
Caso contrário, instale
OpenSSH
usandosudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Reinicie seu servidor e verifique se
sshd
está sendo executado usandops aux | grep sshd
-
Se precisar, você pode configurar seu
/etc/ssh/sshd_config
arquivo, mas não é necessário para configurações simples -
verifique se o As portas são abertas usando
netcat
:nc -v -z 127.0.0.1 22
-
Para copiar arquivos de um
Linux
cliente para umLinux
cliente use scp da seguinte maneirascp ~/filename.md [email protected]:~/folder/filename.md
-
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
-
Existem vários clientes para executar SSH servidores no Windows, como:
-
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
-
Comparações desses servidores:
Servidor SSH Bitvise
-
Fornece quase próximo ao prompt
cmd
nativo, promptpowershell
, preenchimento automático -
Fornece recursos adicionais para personalização, se você precisar de uso avançado
-
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
eOpenSSH
funcionem. -
Para copiar arquivos usando scp use:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
-
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:
-
fornece um Linux shell no Windows em que comandos simples do Linux, como
ls
,cp
,find
, etc., trabalho, semelhante aMINGW64
-
você pode acessar
cmd
epowershell
diretamente digitandocmd
oupowershell
-
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 -
A grande vantagem do MobaSSH é que ele tem uma interface de usuário muito simples e
scp
essh
e bem integrado. Então, funcionará para casos de uso simples -
Para copiar arquivos de um cliente Linux para um servidor Windows executando
MobaSSH
: usescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Isso ocorre porqueMobaSSH
é baseado no Cygwin e suas unidades são mapeadas da mesma maneiracygwin
– 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.
-
É muito bugado e você precisará personalizá-lo pesadamente.
-
A conclusão do comando não funciona
-
Deixará espaços em branco quando você mover o cursor no terminal
-
Python não funciona
-
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/
localuser@machineA: ssh -p 2222 username@domain
(para indicar que você está executando o comando ssh como usuário local na máquinaA)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 localexample.com
)-r
sinalizador, já que não é necessário para copiar arquivos únicos (ele ‘ é usado para copiar diretórios recursivamente )