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 / computer / Perguntas / 1433746
Accepted
Fattie
Fattie
Asked: 2019-05-07 12:43:21 +0800 CST2019-05-07 12:43:21 +0800 CST 2019-05-07 12:43:21 +0800 CST

Existe uma maneira de scp para "esta" máquina? (A máquina "pai"?)

  • 772

Digamos que eu tenha um terminal aberto em um Mac (ou qualquer caixa unix-ish)

fattie$

Claro que posso fazer isso:

fattie$ scp -i key.pem [email protected]:file.js .

e copiará file.js do meu servidor AWS para o Mac. Tudo bem até agora.

Outro dia, eu faço isso

fattie$ ssh -i key.pem [email protected]

Agora estou em um shell no Mac, mas estou conectado a um shell na máquina aws

ubuntu@ip-111-22-3-444:~$ 

Tudo certo.

Se eu quiser transferir o arquivo file.js de volta para o Mac, é claro que você pode fazer isso seguindo as linhas de:

ubuntu@ip-111-22-3-444:~$ scp file.js [email protected]

Sem problemas.

Mas.

Já estou "dentro" do Mac, se você entende o que quero dizer.

O shell pai (existe tal conceito?) do shell do ubuntu é de fato o Mac em questão. Estou até no diretório correto que desejo no Mac.

Na verdade, existe alguma maneira de dizer scp - ou algum outro comando? - para copiar de

  • o shell em que você está (ou seja, o shell aws no exemplo) para

  • "onde você está localmente", o shell "pai", o Mac no exemplo?

Talvez algo como...

ubuntu@ip-111-22-3-444:~$ cat file.js > "the parent machine"/done.js

ou mesmo apenas

ubuntu@ip-111-22-3-444:~$ cp file.js "the parent machine"

... se você vê o que quero dizer?

Existe uma maneira de chegar ao shell "pai"?

(Eu acho que você poderia exagerar usando nc, mas teria que configurar o final local primeiro!)

Muitas vezes seria muito conveniente fazer isso.

shell scp
  • 2 2 respostas
  • 158 Views

2 respostas

  • Voted
  1. Best Answer
    user1686
    2019-05-07T13:04:46+08:002019-05-07T13:04:46+08:00

    Sim e não. Os shells (conexões locais e SSH) empilham , mas o shell remoto iniciado via SSH não tem acesso ao cliente em execução localmente. Não há back-túnel para transferência de arquivos (há um para ssh-agent, mas isso é tudo).

    Você pode conseguir scp/sftp do servidor remoto de volta para o computador local, mas funcionaria como uma conexão totalmente independente (mais uma nova camada na pilha) – não saberia nada sobre a "pasta atual" em que você estava .

    Portanto, como o único método é uma nova conexão SSH, obviamente é necessário que seu computador local tenha um servidor SSH (sshd) em execução para começar. (Felizmente, ao contrário do nc, o sshd só precisa ser configurado uma vez e deixado em execução para sempre.)

    Se o seu computador tiver um endereço IP público, o próximo passo é apenas fazer o SSH de volta do sistema Ubuntu para o seu próprio endereço IP (como pode ser encontrado em $SSH_CONNECTION). Se tanto o cliente quanto o servidor tiverem IPv6, isso poderá ser usado.

    A maioria dos PCs não tem um endereço IP público, então a alternativa é usar o -Rrecurso de "encaminhamento TCP remoto" do SSH para estabelecer um canal de retorno - observe que, neste caso, ainda é um novo login SSH em seu computador, ainda não não sei nada sobre o shell "pai":

    MyMac$  pwd
    /Users/Fred/Documents/This/That
    MyMac$  ssh -R 12345:localhost:22 ubuntu.example.com
      ubuntu$  ssh -p 12345 localhost
        MyMac$  pwd
        /Users/Fred
        MyMac$  exit
      ubuntu$  scp -o Port=12345 file.json localhost:Documents/
    

    Neste exemplo, 12345 é um número de porta aleatório que começará a aceitar conexões no servidor, que serão transportadas para sshd na porta 22 do seu computador local.

    Nota: Neste exemplo, a opção -R é especificada antes da conexão, mas se você precisar dela retroativamente, basta abrir uma segunda conexão (desta vez com -R) e o túnel estará disponível globalmente. Não está limitado a esse shell/conexão em particular.

    (Como alternativa, as teclas Enter ~ Cdevem exibir um prompt interativo que aceita "-R 123..." como entrada e estabelece o encaminhamento.)


    Pessoalmente, eu recomendaria apenas SFTP'ing diretamente para a máquina remota. Em seguida, você pode navegar até o arquivo usando 'cd' e 'ls' um tanto regulares e, em seguida, recuperar arquivos usando 'get'.

    sftpO cliente OpenSSH padrão não é ótimo, mas funciona bem; lftp é uma das melhores alternativas.


    a maneira esfarrapada de fazer o que eu digo é apenas colocar o arquivo na tela. Então você efetivamente o tem na máquina local: copie e cole em um arquivo :) ( Ocorre-me que alguém poderia escrever uma versão personalizada de um aplicativo Terminal que tenha esse recurso: ele entenderia quando você digitasse cat f.txt > LOCAL/f.tx na verdade apenas capturaria o resultado e salvaria em um arquivo de texto!!! Heh!) – Fattie 6 horas atrás

    Sim, alguns terminais suportam isso – na verdade, é um recurso que vem do sistema dial-up e dos dias de BBS e é chamado de ZMODEM ou XMODEM .

    Para receber um arquivo via ZMODEM, primeiro certifique-se de que o terminal local tenha o recurso de transferência de arquivo ativado (acho que está presente pelo menos no multiplexador GNU Screen, embora muito raramente em terminais modernos), depois execute sz <file>no servidor remoto e você deve veja o arquivo pop-up localmente.

    Parece que alguém também escreveu scripts de integração para Zmodem no iTerm2.

    • 2
  2. Jim L.
    2019-05-07T14:41:34+08:002019-05-07T14:41:34+08:00

    @grawity está correto (e votado) para o problema conforme declarado.

    No entanto, se você deseja criar uma instância de servidor SSH em sua máquina local e o servidor SSH de sua máquina local é acessível a partir do host blah, você pode usar este comando, que funciona mesmo sem saber qual é o nome de host ou IP de sua máquina local. Você precisa saber o nome de usuário e, possivelmente, o número da porta, se estiver executando o SSH em uma porta não padrão:

    $ scp file.js fattie@${SSH_CLIENT%% *}:done.js
    

    onde fattieestá seu nome de usuário no Mac local. Essa linha de comando também assume que você está executando bashseu shell em blah.

    Mas, novamente, como o grawity aponta, você precisaria estar executando o SSH no Mac e, se o seu Mac estiver em uma LAN privada atrás de um firewall, o firewall teria que ser configurado para passar a porta TCP 22 de entrada para o seu Mac. Este comando é apenas um atalho para executar a cópia sem que você precise saber qual é o seu IP público ou ter algum tipo de DNS dinâmico instalado.

    • 1

relate perguntas

  • Execute o comando de sudo su

  • como executar um script dentro de um script no comando shell

  • Atom bagunça a formatação no arquivo Emacs

  • Como exibir o nome do arquivo apenas como uma saída do comando cp?

  • atalho do shell da área de trabalho no painel lateral do explorer

Sidebar

Stats

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

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

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