O cliente OpenSSH tem uma opção de linha de comando para encaminhamento de porta, usada assim:
ssh -L localport:server:serverport user@host
que se conectará host
como user
, e ao mesmo tempo redirecionará localport
o cliente para serverport
on server
(que pode ser host
ou qualquer coisa alcançável pela host
rede).
Agora suponha que eu tenha SSHed para host
fazer apenas
ssh user@host
e no meio da sessão percebo que esqueci de encaminhar a porta. Infelizmente, estou no meio de algo, então não quero apenas sair e restabelecer a conexão SSH com o encaminhamento de porta.
Existe uma maneira de adicionar encaminhamento de porta a uma sessão SSH em execução?
De
man 1 ssh
:Então digite Enter
~
C(ou seja , c maiúsculo ), entãocom desejado
localport
,server
eserverport
, finalmente Enter.Notas:
A inicial Enterserá enviada imediatamente para o lado remoto e pode causar alguma ação lá, então escolha um bom momento (por exemplo, quando você estiver em um shell com uma linha de comando vazia). Ou se você tiver certeza de que a última coisa que digitou foi de Enterqualquer maneira (por exemplo, você acabou de invocar um comando que está em execução), você pode começar diretamente
~
porque Enterjá foi notado pelo seu localssh
.Em teclados internacionalizados, o til pode ser uma tecla morta para gerar caracteres 'tilded' especiais (como pressionar ~npara gerar
ñ
). Nesse caso, pode ser necessário pressionar SPACEdepois ~para gerar um único til, ou seja: ENTER~SPACEC. No caso dos layouts de teclado espanhol/LA, como não há nenhum caractere combinado usando til e C, o espaço pode ser omitido e ~Cgera a sequência desejada.Em relação a vários redirecionamentos, a
ssh
linha de comando com escape aceita apenas um único comando. Você deve pressionar novamente a sequência de teclado para inserir outro comando ou redirecionamento.Você pode ter várias conexões ssh. O encaminhamento de porta pode ser executado independentemente de sua conexão em execução. Além disso, ele deve ser executado no lado do cliente para
-L
.Você pode adicionar
-N -f
ao seu comando para colocá-lo em segundo plano em outra janela de terminal e não enviar nenhum arquivo ENTER. Esse fundo pode não funcionar corretamente no Windows, apenas minimize o terminal.Sim, há outra resposta cobrindo~C .