Quero baixar arquivos do meu computador do escritório para o meu laptop.
Posso conectar minha máquina do escritório por SSH ao servidor da organização e depois o SSH do servidor à minha máquina do 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 o meu laptop (local)?
Respostas:
As respostas anteriores mencionam como usar a diretiva ProxyJump (adicionada no OpenSSH 7.3) para conectar-se através de um servidor intermediário (geralmente chamado de host bastião), mas menciona-a apenas como argumento de linha de comando.
A menos que seja uma máquina na qual você não se conectará no futuro, a melhor coisa é configurá-la
~/.ssh/config
.Eu colocaria um arquivo como:
Se você estiver usando uma versão anterior do OpenSSH que não oferece suporte ao ProxyJump, substitua-a pelo equivalente:
e se sua versão local do ssh era realmente antiga e não suportava
-W
:embora este último exija que a máquina do bastião esteja
nc
instalada.A beleza do ssh é que você pode configurar cada destino no arquivo, e eles serão empilhados muito bem. Assim, você acaba trabalhando
office-machine
como o nome do host em todas as ferramentas (ssh, scp, sftp ...) como se fossem conexões diretas, e eles descobrirão como se conectar com base no ssh_config. Você também pode ter curingasHost *.internal.company.local
para fazer com que todos os hosts que terminem assim passem por um bastião específico, e isso se aplicará a todos eles. Uma vez configurada corretamente, a única diferença entre fazer conexões de um salto ou vinte seria o tempo de conexão mais lento.fonte
Se você possui um OpenSSH (8.0) recente, pode usar a opção
-J
(jump) :Com versões mais antigas (mas pelo menos 7.3), você pode usar a
ProxyJump
diretiva , na linha de comando:ou em
ssh_config
arquivo, como mostra a resposta de @ Ángel.Existem outras opções, como
ProxyCommand
encaminhamento de porta, que você pode usar em versões ainda mais antigas do OpenSSH. Estes são abordados em O OpenSSH suporta login multihop?fonte
ssh -J userA@orgserv userB@officecomp cat remote/path > local/path
scp
não suportar-J
, ainda poderá ser novo o suficiente para suportar aProxyJump
opção; tente uma das outras respostas que usam essa opção explicitamente.ssh
perguntas que sugerem a modificaçãoconfig
de hosts específicos quando uma simples opção de linha de comando é suficiente para fazer o trabalho.-J user@intermediate
toda vez que preciso conectar.Às vezes, podemos apenas usar o pipeline. Essa hora é hoje.
Você também pode enviar
Sim, existem outras soluções que envolvem proxy, etc., mas saber como fazer isso é útil.
fonte
cat
!Use a
ProxyJump
configuração:fonte
Existe um protocolo antigo chamado ZMODEM : poucos programas o suportam atualmente, mas quando funciona, pode ser bastante conveniente.
Primeiro verifique se o programa do terminal do seu laptop suporta o ZMODEM. (Por exemplo, você pode configurar o iTerm2 (no Mac) para oferecer suporte ao ZMODEM. Um script de exemplo está disponível aqui .)
Na 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
sz (filename)
. O arquivo será baixado através do seu terminal.fonte
Configuração sob ssh do usuário:
~/.ssh/config
Agora você pode copiar diretamente do servidor da intranet em mais de 3 servidores de salto.
scp [email protected]:/home/user/ ./*
Prefiro isso porque não é mais necessário especificar servidores de salto com scp
fonte
Via SCP -3:
fonte
-3
opção é descrita como "Cópias entre dois hosts remotos são transferidas pelo host local". enquanto eu acredito que esta pergunta estipula que o host local não pôde acessar "remote2".-3
. Mas isso pressupõe que você pode conectar-se da máquina do meio à primeira.-J
/JumpHost
. Muito pelo contrário, pois tem a limitação que @Joe menciona.