Eu acho que você está muito perto de entender, há apenas algumas coisas para esclarecer. Então, dado o seguinte comando SSH emitido em um computador cliente:
ssh -L [bind_address:]port:host:hostport user@server
Este comando vai iniciar uma conexão SSH com server
e estabelecer essa conexão direta. O -L
direciona o cliente SSH para abrir uma porta (o número da porta é port
, ligado à interface de rede do cliente especificada por bind_address
) no computador cliente. Isso permite que outro software no cliente (como um navegador da Web ou ferramenta de gerenciamento de banco de dados) se conecte a essa porta e qualquer tráfego enviado percorra o túnel SSH e, no computador server
, o servidor SSH abrirá uma conexão com host:hostport
e envie o tráfego por meio dessa conexão para o computador host
.
Em seu exemplo do Formato # 1, seu servidor da Web e seu servidor SSH são o mesmo computador e, portanto, host
é apenas localhost
, significando o localhost
do servidor SSH. Em seu segundo exemplo, você está usando o servidor SSH como intermediário para acessar um computador remoto diferente, mas a chave é que o servidor SSH é capaz de estabelecer a conexão com esse computador ( host
). Então, na realidade, ambos os comandos estão fazendo a mesma coisa, a única diferença é que um está fazendo a conexão final com um serviço no mesmo computador que o servidor SSH e o segundo está fazendo uma conexão com um servidor remoto.