encaminhamento de porta e cópia de volta para a máquina local

encaminhamento de porta e cópia de volta para a máquina local

Normalmente estou fazendo login em uma rede via ssh e depois em outro computador novamente via ssh para meu computador de destino final. Por exemplo, um servidor doméstico e, uma vez lá, em um dos computadores da minha família. Isso se parece com:

user0@inital:> ssh -P port_number user1@server
user1@server:> ssh -P port_number user2@final
user2@final:>

Uma vez, user2@finalgostaria de copiar (scp) de volta para o arquivo user0@inital.

Por exemplo, posso fazer o encaminhamento de porta local e copiar do meu computador local para o remoto através do servidor. Sobreuser0@initial

 user0@initial:> ssh -L4321:final:22 -p 443 user1@server

4321Isso encaminha o formulário da porta local user0@initialpara user1@serverport 22on user2@final. Então continue user0@initialcorrendo

  scp -P 4321 some_file  [email protected]:~/

Posso copiar para user2@finalover user1@server.

A questão é como reverter as coisas e copiar de user2@finalpara user0@initial.

Obrigado pela ajuda.

Responder1

Supondo que você queira executar o comando scp no prompt de comando final:

# have the local client tell the remote server's sshd to listen on
# port 8765 (randomly chosen) and forward any connection it receives
# to the client which will connect to port 22 locally.
user0@initial:> ssh -R127.0.0.1:8765:127.0.0.1:22 -p 443 user1@intermediate

# On this machine have the client tell this remote server's (final's)
# to listen on port 9876 (randomly chosen) and forward any connection
# that it receives back to this client which will connect it to poirt
# 8765 locally.
user1@intermediate:> ssh -R127.0.0.1:9876:127.0.0.1:8765 user2@final

# Now that you are on the final server (final) you run scp, telling
# it to connect to localhost on port 9876.
# 
# So scp will connec to local (final's) port 9876, which is listened
# to by the local sshd based on our second command above.  That sshd
# will forward the connection to the ssh client that connected to it
# (on intermediate).
# 
# The ssh client on intermediate will connect to localhost:8765 as
# instructed which is a conenction to the sshd on intermediate that
# is listening on that port because it was instructed to do so by the
# ssh client on initial when it connected.
# 
# The sshd on intermediate will forward the conenction back to the
# client on initial which will, as instructed, connect to localhost:22
# on initial.
# 
# All this monkey motion means that now scp on final is "directly"
# connected to port 22 (sshd) on initial and can initiate a login
# and file transfer. to the ssh client that connected to it (on
# intermediate).
user2@final:> scp -P 9876 file_from_final 127.0.0.1:back_at_the_house

Observe que fiz todas as portas em 127.0.0.1, o que as protege da exploração por terceiros na internet (mas não de terceiros no "servidor" ou "final".

Responder2

Sim. Você vai querer dar uma olhada na palavra-chave ssh_configComando Proxy

Especifica o comando a ser usado para conectar-se ao servidor. A string de comando se estende até o final da linha e é executada usando a diretiva 'exec' do shell do usuário para evitar um processo de shell prolongado.

Na string de comando, qualquer ocorrência de '%h' será substituída pelo nome do host para conexão, '%p' pela porta e '%r' pelo nome do usuário remoto. O comando pode ser basicamente qualquer coisa e deve ler sua entrada padrão e gravar em sua saída padrão. Eventualmente, ele deve conectar um servidor sshd(8) em execução em alguma máquina ou executar sshd -i em algum lugar. O gerenciamento de chaves do host será feito usando o HostName do host que está sendo conectado (padrão para o nome digitado pelo usuário). Definir o comando como “nenhum” desativa totalmente esta opção. Observe que CheckHostIP não está disponível para conexões com um comando proxy.

Esta diretiva é útil em conjunto com nc(1) e seu suporte a proxy. Por exemplo, a diretiva a seguir se conectaria por meio de um proxy HTTP em 192.0.2.0:

ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p

informação relacionada