AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 537319
Accepted
Yohai Magan
Yohai Magan
Asked: 2019-08-26 04:05:27 +0800 CST2019-08-26 04:05:27 +0800 CST 2019-08-26 04:05:27 +0800 CST

Como posso baixar um arquivo de um host para o qual só posso SSH por meio de outro host?

  • 772

Quero baixar arquivos do computador do escritório para o laptop.

Posso conectar minha máquina de escritório por SSH ao servidor da organização e, em seguida, SSH do servidor à minha máquina de escritório.

Os únicos comandos que o servidor da organização aceita são ssh, ssh1 e ssh2.

Como posso baixar um arquivo da máquina do meu escritório (remoto) através do servidor para a minha máquina laptop (local)?

ssh scp
  • 8 8 respostas
  • 9003 Views

8 respostas

  • Voted
  1. Martin Prikryl
    2019-08-26T04:55:17+08:002019-08-26T04:55:17+08:00

    Se você tiver um OpenSSH (8.0) recente localmente , você pode usar o -Jswitch (jump) :

    scp -J user@intermediate user@target:/path
    

    Com versões mais antigas (mas pelo menos 7.3), você pode usar a ProxyJumpdiretiva , na linha de comando:

    scp -o ProxyJump=user@intermediate user@target:/path
    

    ou em ssh_configarquivo, como mostra a resposta do @Ángel.


    Existem outras opções como ProxyCommandencaminhamento de porta, que você pode usar em versões ainda mais antigas do OpenSSH. Estes são abordados em O OpenSSH suporta login multihop?

    • 39
  2. Best Answer
    Ángel
    2019-08-26T16:21:54+08:002019-08-26T16:21:54+08:00

    As respostas anteriores mencionam como usar a diretiva ProxyJump (adicionada no OpenSSH 7.3) para se conectar através de um servidor intermediário (geralmente chamado de bastion host), mas menciona-o apenas como um argumento de linha de comando.

    A menos que seja uma máquina que você não vai conectar no futuro, o melhor é que você configure em ~/.ssh/config.

    Eu colocaria um arquivo como:

    Host office-machine
    Hostname yochay-machine.internal.company.local
    ProxyJump bastion-machine
    
    Host bastion-machine
    Hostname organization-server.company.com
    ...
    

    Se você estiver usando uma versão anterior do OpenSSH que não suporta ProxyJump, substitua-a pelo equivalente:

    ProxyCommand ssh -W %h:%p bastion-machine
    

    e se sua versão ssh local fosse realmente antiga que não suportasse -W:

    ssh bastion-machine nc %h %p
    

    embora este último exija que a máquina bastion esteja ncinstalada.

    A beleza do ssh é que você pode configurar cada destino no arquivo e eles serão empilhados muito bem. Assim, você acaba trabalhando com office-machineo nome do host em todas as ferramentas (ssh, scp, sftp...) como elas eram conexões diretas, e elas descobrirão como se conectar com base no ssh_config. Você também pode ter curingas como Host *.internal.company.localfazer com que todos os hosts terminando assim passem por um bastião específico, e isso se aplicará a todos eles. Uma vez configurado corretamente, a única diferença entre fazer conexões de um salto ou vinte seriam os tempos de conexão mais lentos.

    • 38
  3. Joshua
    2019-08-27T08:00:52+08:002019-08-27T08:00:52+08:00

    Às vezes, podemos simplesmente usar o pipeline. Esse tempo é hoje.

    ssh -A user@host1 ssh user@host2 cat filename > filename
    

    Você pode carregar também

    ssh -A user@host1 ssh user@host2 cat \\\> filename < filename
    

    Sim, existem outras soluções envolvendo proxy, etc, mas saber como fazer isso é útil.

    • 10
  4. RalfFriedl
    2019-08-26T05:33:32+08:002019-08-26T05:33:32+08:00

    Use a ProxyJumpconfiguração:

    ProxyJump
    Especifica um ou mais proxies de salto como [user@]host[:port] ou um URI ssh. Vários proxies podem ser separados por vírgulas e serão visitados sequencialmente. Definir esta opção fará com que o ssh(1) se conecte ao host de destino, primeiro fazendo uma conexão ssh(1) com o host ProxyJump especificado e, em seguida, estabelecendo um encaminhamento TCP para o destino final a partir daí.

    scp -o ProxyJump=user@intermediate user@target:/path
    
    • 8
  5. jick
    2019-08-28T08:45:01+08:002019-08-28T08:45:01+08:00

    Existe um protocolo antigo chamado ZMODEM : poucos programas o suportam hoje em dia, mas quando funciona, pode ser bastante conveniente.

    Primeiro verifique se o programa de terminal do seu laptop suporta ZMODEM. (Por exemplo, você pode configurar o iTerm2 (no Mac) para suportar ZMODEM. Um script de exemplo está disponível aqui .)

    Em sua máquina de escritório, execute:sudo apt install lrzsz

    Agora tudo o que você precisa fazer é ssh na máquina do escritório e executar o sz (filename). O arquivo será baixado através do seu terminal.

    • 2
  6. Lukáš Viktora
    2019-09-10T07:07:25+08:002019-09-10T07:07:25+08:00

    Configuração no ssh do usuário:~/.ssh/config

    Host *
        UserKnownHostsFile=/dev/null
        StrictHostKeyChecking=no
        ServerAliveInterval 300
        ServerAliveCountMax 2
        ForwardAgent yes
    
    
    Host jump server
        HostName server.company.org
        User root
    
    Host jump1 server1
        HostName server1.dmz.company.org
        User root
        ProxyJump jump
    
    Host jump2 server2
        HostName server.dmz2.company.org
        User root
        ProxyJump jump1
    
    Host *.intranet.company.org
        User user
        ProxyJump jump2
    

    Você pode copiar agora do servidor de intranet diretamente sobre o servidor de 3 saltos.

    scp [email protected]:/home/user/ ./*

    Eu prefiro isso por não precisar mais especificar servidores de salto com scp

    • 1
  7. wuseman
    2019-08-28T08:04:03+08:002019-08-28T08:04:03+08:00

    Via SCP-3:

    scp -3 user1@remote1:/root/file1.txt user2@remote2:/root/file1.txt
    
    • 0
  8. Martin Verdejo
    2020-07-14T17:51:41+08:002020-07-14T17:51:41+08:00

    Isto é o que funcionou para mim:

    scp -o 'ProxyJump user@intermediate' user@target:/fiepath .
    

    O .no final indica que o caminho de download de destino é a pasta atual

    • 0

relate perguntas

  • Auto-SSH funciona manualmente, mas não em segundo plano

  • Execute o aplicativo X remotamente, execute a GUI no host remoto [fechado]

  • rsync porta 22 e 873 uso

  • Aborto repentino do SCP: tubo quebrado, código de autenticação de mensagem incorreto

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve