Como SCP do servidor linux para o cliente Windows

23

Estou usando SSH em uma máquina Linux usando PuTTY e tentando copiar um arquivo em algum lugar (em qualquer lugar) na minha máquina local. Eu acho que o SCP é o melhor candidato para o trabalho, mas realmente não me importo, desde que a solução funcione!

I cdno diretório que contém o arquivo que eu quero ( app.war) e digite o seguinte:

scp app.war ./

Eu tentei ambos sem sucesso:

scp app.war ./C:/Users/myUser/
scp app.war ./Users/myUser/

Isso me fez pensar que talvez o SCP seja uma ferramenta cliente / servidor e exija um cliente na minha máquina Windows, que não existe.

Estou apenas usando a sintaxe errada? Ou estou fora da base? Se sim, quais opções eu tenho? Desde já, obrigado!

pnongrata
fonte
A resposta real para esta pergunta está aqui: stackoverflow.com/a/23412501/1579667 . A sintaxe éscp some_file user@host:/c/temp
Benj
Veja também cliente e servidor Bitvise SSH. É um dos mais antigos softwares SSH para Windows. O cliente é um download gratuito e gratuito para uso.
JWW

Respostas:

25

Para que você possa copiar os arquivos de volta para o Windows, você precisa que o serviço / daemon SSH esteja em execução no Windows, é muito mais fácil usar essa ferramenta, pois é capaz de importar sessões do Putty, um cliente muito simples que você adoro!

WinSCP :: Cliente SFTP e FTP gratuito para Windows

alexus
fonte
Apenas uma ferramenta incrível :). Adorei \ m /
Chaitanya 03/10
Realmente não responde à pergunta original, que estava na linha de comando. Veja meu comentário abaixo da pergunta original.
Jul15
O @Benj OP pediu solução, WinSCPé uma boa solução para essa tarefa.
alexus
12

Você está certo. SSHD são os serviços do servidor SSH que são executados no host. Ele aceita conexões de clientes SSH (como PuTTy), clientes SCP e clientes SFTP.

Você pode fazer pscpo download no mesmo site em que o PuTTY está hospedado.

Na máquina Windows, você executaria um comando semelhante a

pscp.exe [email protected]:/path/to/app.war c:\tmp

George M
fonte
2

Para SCP um arquivo em uma máquina Windows, você precisa de um servidor SSH / SCP no Windows.

Por padrão, não há suporte para SSH / SCP no Windows. Você pode instalar o OpenSSH para Windows da Microsoft ( versões e downloads ). Está disponível como recurso opcional no Windows 10 versão 1803 e mais recente. Também pode ser instalado manualmente em versões mais antigas do Windows.

Eu preparei um guia para configurar o servidor SSH / SFTP no Windows usando esta versão do OpenSSH da Microsoft .

Consulte também O SFTP do IIS é suportado nativamente pelo Windows?


Embora, ao fazer o SSH no servidor Linux da máquina Windows, você possa realmente baixar um arquivo do servidor Linux para o servidor Windows, em vez de tentar fazer upload do arquivo do servidor Linux para o servidor Windows.

Se você possui um acesso SSH do Windows ao Linux, também possui um acesso SCP (ou melhor ainda, um acesso SFTP).

Use qualquer cliente SCP / SFTP disponível.

Você pode usar o cliente WinSCP SFTP / SCP , que possui interface gráfica e interface de linha de comando .

Outra alternativa é o conjunto de ferramentas PuTTY, que inclui a pscpferramenta de linha de comando com uma sintaxe semelhante ao scpcomando OpenSSH . Além disso, as versões mais recentes do Windows 10 vêm com o OpenSSH scpintegrado e também podem ser instaladas em versões mais antigas.

(Eu sou o autor do WinSCP)

Martin Prikryl
fonte
existe uma versão do pscp para OSX / Linux?
Codingknob 18/05/19
@codingknob Claro, existe um pacote "putty" para muitas distribuições. Embora o pscpseja funcionalmente idêntico ao OpenSSH scp, que já está disponível em todas / na maioria das distribuições.
Martin Prikryl
1

O Windows 10 agora possui o OpenSSH. Https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse

Obter um prompt de comando do administrador

Open PowerShell as an Administrator.

Verifique as versões disponíveis

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Instalar cliente

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Instalar servidor

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Iniciar servidor e ativar na inicialização

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

Encontre o seu endereço IP do Windows

ipconfig

Na sua máquina remota (Linux), encontre seu endereço IP.

ifconfig

Crie uma chave SSH pública

ssh-keygen.exe

Copie a chave pública da máquina local (Windows) para a máquina remota (Linux) para que você não precise digitar uma senha o tempo todo.

Observe que o ssh-copy-id atualmente não está disponível no Windows.

cat C:\Users\YOU/.ssh/id_rsa.pub | ssh USER@REMOTE_IP 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

Faça o mesmo em sua máquina Linux (observe, ssh-copy-id não funciona)

ssh-keygen # if needed
cat ~/.ssh/id_rsa.pub | ssh USER@WINDOWS_IP 'mkdir -p ~/.ssh && type con >> C:/Users/YOU/.ssh/authorized_keys'
  • O método acima não funcionou para mim, então acabei manualmente SCP colocando a chave pública e colando-a no arquivo C: /Users/YOU/.ssh/authorized_keys.

  • Como ainda não funcionou, tive que modificar o arquivo sshd_config.

    • Abra o bloco de notas como administrador

    • Abra% programdata% \ ssh \ sshd_config

    • Adicione as seguintes linhas:

        Match User YOU
             AuthorizedKeysFile C:/Users/YOU/.ssh/authorized_keys
  • Reiniciar

Crie uma senha no Windows se você ainda não tiver uma

System Settings...Sign-in options

- Observe que você ainda pode desativar a tela de login do Windows: a) Configurando a opção 'Requer login' como nunca eb) Usando o comando 'netplwiz' e desmarcando a caixa de seleção 'Os usuários devem digitar a senha ...'.

Agora você deve poder fazer o SSH ou SCP da sua máquina Linux

scp FILE WINDOWS_IP:C:/Users/YOU/Desktop
ismael
fonte
1

Você pode fazer isso usando o subsistema Linux Ubuntu para Windows (é necessário habilitar isso como um recurso do Windows). Em seguida, você pode usar um cliente de terminal Linux que é executado no Windows, obtendo-o da Microsoft Store (por exemplo, Ubuntu 16.04 LTS). Então, se você tiver a segurança ssh configurada como remota na sua máquina Linux, poderáscp no terminal Windows Ubuntu local (quando estiver logado como o nome de usuário que você definiu para sua instância do Linux) algo como isto:

scp -i ~/.ssh/my_rsa [email protected]:~/myfile ~/ ... insira a senha do RSA

O arquivo remoto será copiado para o sistema de arquivos Ubuntu local usado pelo Windows, por exemplo

C:\Users\my.username\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\my_linux_username

Chris Halcrow
fonte
11
Nas versões mais recentes do Windows 10, (Win32-OpenSSH) scp(.exe)está embutido. Você não precisa instalar nada.
Martin Prikryl
-1

Etapa 1: Faça o download do pscp
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
(Com base na sua máquina, faça o download da respectiva versão)

Etapa 2: Familiarize-se com os comandos pscp
Para fazer isso, abra o prompt de comando na máquina Windows, vá para o diretório em que você baixou o pscp.exe e digite "pscp"

Etapa 3: Transfira o arquivo da sua máquina Linux para a máquina Windows
abra o prompt de comando e execute o comando abaixo, fornecendo seus detalhes:

pscp [email protected]:/path/of/your/File/nameofyourfile.txt ./

e este comando transferirá o arquivo da sua máquina Linux para o diretório atual da sua máquina Windows

Etapa 4: Transfira o arquivo da sua máquina Windows para a máquina Linux,
abra o prompt de comando e execute o comando abaixo, fornecendo seus detalhes:

pscp nameofyourfile.txt [email protected]:/path/where/youwantyourfile

Espero que isso esteja claro e funcione para todos vocês!

SH '
fonte
2
As respostas apenas ao link são inúteis, pois podem parar de funcionar no futuro - tente expandir sua resposta explicando as etapas do vídeo.
djsmiley2k in darkness