Dei uma olhada em outras perguntas aqui e em vários tutoriais de "uso de 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 me conecto a 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
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 devo carregar o arquivo no meu diretório pessoal remoto (em vez de raiz), como:
scp -r -P 2222 file.ext username@domain:~/
mas quando eu faço e pressiono "Enter" nada acontece, como se o shell estivesse esperando por mais informações.
Resumo dos meus problemas:
- cp: esse arquivo ou diretório não existe
- shell "preso" em ~ /
Alguma sugestão?
localuser@machineA: ssh -p 2222 username@domain
(para indicar que você está executando o comando ssh como localuser em machineA)scp
, o remoto lado sempre tem que conter o cólon (por exemploremotehost:/tmp
), então ele só vai fazer uma cópia ordinária (scp /tmp/foo.txt example.com
copia/tmp/foo.txt
em um arquivo localexample.com
)-r
bandeira, como isso não é necessário para copiar arquivos individuais (é usado para recursivamente copiar diretórios)Respostas:
Você precisa executar o
scp
comando na máquina local, não no controle remoto. Você não precisa dessh
nada:Você também não precisa de
-r
:Se você já está conectado à máquina remota e deseja copiar do seu local, precisa garantir que sua máquina local esteja acessível via Internet e esteja
ssh
configurada. Eu não acho que é isso que você procura, mas se for, execute isso no controle remoto:fonte
Eu forneço dois métodos de carregamento de arquivos para cima / baixo entre a máquina remota e a local (eu uso o Mac air):
Nesse caso, eu quero ativar / desativar o "11.jpeg" entre local e remoto:
1
Para alcançar a mesma intenção ao fazer logon no SSH , você deve primeiro definir “Preferências do Sistema> Compartilhamento> Logon Remoto> Todos os Usuários (não tenho certeza se você deve definir para" todos os usuários ", mas funciona nessa situação) ) ”O Mac dirá a você" Para efetuar login neste computador remotamente, digite: ssh username @ xxxxxx e digite o comando abaixo:
nome de usuário scp @ domínio: /home/xxx/xxx/11.jpeg nome de usuário @ xxxxxx: / Users / username / Desktop /
Este comando acima é para fazer o download de arquivos de remoto para local quando você estiver efetuando login no ssh. Apenas altere os dois caminhos quando desejar fazer upload de arquivos.
fonte
Se você estiver executando este comando scp na máquina remota, ele estará 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 quefile.ext
esteja no~/dir
computador remoto, como no seu exemplo). Se você executarscp
na máquina remota, inverta "local" e "remoto".fonte
Use o
scp
comandoSe você deseja transferir uma pasta, apenas
zip
a primeira, podemosunzip
posteriormente.No seu computador, execute o seguinte:
Aqui
root
está sua conta e10.145.198.100
é o endereço IP do servidor remoto. Vamos copiarthe_file
para a~/
pasta no controle remoto.Descompacte o arquivo:
fonte
root
ter acesso SSH na máquina remota? Isso é bastante inseguro. Melhor usar um uso comum e depoissudo
fazer o que a raiz tiver que fazer nessa máquina.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 isso
:~/
fonte
Solução para copiar arquivos de
Linux client
paraLinux Server
Verifique se
sshd
está sendo executado no 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 o servidor e verifique se
sshd
está executando usandops aux | grep sshd
Se você precisar, pode configurar seu
/etc/ssh/sshd_config
arquivo, mas não é necessário para configurações simplesverifique se as portas estã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 de
Linux client
para `WindowsExistem vários clientes para executar servidores SSH no Windows, como o OpenSSH da MS
MobaSSH
Servidor SSH Bitvise
Instale um dos servidores acima e verifique se a porta 22 está aberta usando
firewall netsh advfirewall adicionar nome da regra = "SSH Port 22" dir = em ação = permitir protocolo = UDP localport = 22
firewall netsh advfirewall adicionar nome da regra = "Porta SSH 22" dir = fora da ação = permitir protocolo = UDP localport = 22
firewall netsh advfirewall adicionar nome da regra = "SSH Port 22" dir = em ação = permitir protocolo = TCP localport = 22
firewall netsh advfirewall adicionar nome da regra = "Porta SSH 22" dir = fora da ação = permitir protocolo = TCP localport = 22
netsh advfirewall define o estado de todos os perfis como desativado
Comparações desses servidores:
Servidor SSH Bitvise
Fornece quase perto do
cmd
prompt nativo ,powershell
prompt, preenchimento automáticoFornece recursos adicionais para personalização, se você precisar de uso avançado
A personalização do usuário para necessidades simples é 0. Comecei a usá-lo em 2 minutos, depois de ter passado muito tempo tentando entrar
MobaSSH
eOpenSSH
trabalhar.Para copiar arquivos usando scp, use:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
Gratuito para uso pessoal, US $ 99 para uso profissional. Por causa de tantos recursos e ótima integração, o preço vale a pena
MobaSSH:
fornece um shell Linux no Windows, onde simples linux comandos tais como
ls
,cp
,find
etc trabalho, semelhante aoMINGW64
você pode acessar
cmd
epowershell
diretamente digitandocmd
oupowershell
O suporte a Unicode é ruim. Codificação não está correta. Por exemplo, se você tentar iniciar o
Python
intérprete, ele travará. Você precisará alterar a codificação manualmente usando ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
e, em seguida, inicie o prompt do PythonA grande coisa sobre MobaSSH é que ele tem uma interface de usuário muito simples, e
scp
essh
e bem integrado. Então, funcionará para casos de uso simplesPara copiar arquivos de um
Linux
cliente para umWindows
servidor em execuçãoMobaSSH
: usescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Isto é porqueMobaSSH
é baseadocygwin
e suas unidades são mapeadas da mesma maneira que ascygwin
unidades -s são mapeadas.Use VMs da Microsoft com o OpenSSHv6.7 instalado em https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , o OpenSSHv6.7 já está instalado.
É muito buggy e você precisará personalizá-lo intensamente.
A conclusão do comando não funciona
Isso deixará espaços em branco quando você estiver movendo o cursor no terminal
Python não funciona
Versões posteriores do OpenSSH podem ter melhorado. MS mais parece disponibilizar o OpenSSH via
Optional Features
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/fonte
Se você estiver no OSX ...
Quando tentei executá-lo com o nome de usuário @ local: / file_directory ...
Eu recebi o seguinte erro:
Solução
No meu Mac, fiz o seguinte para configurar o local
ssh
:Isso então forneceu o nome de usuário @ endereço IP.
fonte
Eu tive esse mesmo problema hoje no MAC.
Digite o seguinte comando:
fonte