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!


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


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 someuser@somehost.com:/path/to/app.war c:\tmp


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)


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

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 username@11.11.11.11:~/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


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 usernameofyourlinuxmachine@10.40.000.000:/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 usernameofyourlinuxmachine@10.40.000.000:/path/where/youwantyourfile

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.