SSH de volta à máquina local a partir de uma sessão SSH remota

12

Estou tentando fazer algo bastante incomum (para mim mesmo) com o SSH e não consigo fazê-lo funcionar, espero que você possa ajudar.

Quero estabelecer uma conexão com um servidor remoto do meu Mac usando SSH. Por enquanto, tudo bem. Agora, a parte complicada, com a conexão com o servidor remoto estabelecida, desejo iniciar uma conexão do servidor remoto VOLTAR para a máquina local. Eu sei, louco. Basicamente, preciso percorrer esses circuitos para poder navegar no servidor remoto e, em seguida, enviar as informações do arquivo de volta à minha máquina local, para que possam ser tratadas por um aplicativo na máquina local. Espero que isso faça sentido!

No momento, se eu fizer o SSH de volta à máquina local quando estiver conectado ao servidor remoto, o terminal permanecerá lá zunindo, sem erros, mesmo com -v.

Estou tentando descobrir para onde devo ligar olhando para a saída da variável $ SSH_CLIENT, mas estou em uma conexão padrão à Internet com baunilha (sem endereço IP estático). Acho que isso pode estar causando o problema.

Coisas que estabeleci: estou em um Mac (OS X 10.6.4) e tenho o Login Remoto ativado nas preferências / compartilhamento do sistema. Se eu tentar fazer o SSH no meu Mac a partir de outra máquina na LAN, não consigo conectar problemas. Se eu tentar fazer o SSH em outro servidor (não na minha máquina local) do meu servidor remoto, posso conectar-me sem problemas.

Portanto, os fatos acima me fazem pensar que estou claro em relação aos firewalls etc. nas máquinas locais e remotas.

Tenho certeza de que devo estar perdendo algo bastante óbvio aqui, mas por toda a minha vida não consigo entender.

Qualquer ajuda, links ou empurrões gerais na direção certa serão muito apreciados!

i0n
fonte
Você pode navegar no servidor remoto com ssh. Ou você tenta usar afs? E quanto a portforwardings e / ou sftp / scp?
Andreas Rehm
Olá. Sim, eu posso conectar e navegar na estrutura de diretórios do servidor remoto sem problemas. Não tenho certeza do que você quer dizer, desculpe. Basicamente, o plano é o seguinte: eu quero ssh no meu servidor Linux remoto do Mac local, procurar um arquivo e poder canalizá-lo de volta para a conexão estabelecida (ou gerar uma nova conexão com a já estabelecida) para a máquina local onde um aplicativo Mac lê / edita os dados antes de enviá-los de volta ao servidor. Não estou particularmente preocupado com o modo como consigo isso em termos de envolvimento de outros protocolos.
i0n 29/08/10

Respostas:

9

Se, quando você se conectar novamente ao seu local, permitir que você faça o login antes de desligar, essa não é a resposta. Se você não chegar tão longe, provavelmente não estará voltando ao seu Mac (ou não chegando a lugar algum ou atingindo o SSH em um gateway). Tente um túnel reverso (será necessário GatewayPorts definido como On em sshd_config no seu servidor, mas acredito que seja o padrão):
you@yourMac$ ssh -R 2000:localhost:22 user@remoteserver
Isso deve permitir que você se conecte ao servidor normalmente, mas também abre um túnel para poder se conectar novamente porta 2000 (qualquer porta acima de 1024 deve funcionar),you@yourserver$ ssh -p2000 user@localhost

EDIT: nome do host alterado para localhost

James L
fonte
2
Você tem que usuário uso @ localhost no último comando
b0fh
1
Isso foi útil, quase me leva aonde eu quero estar! Posso estabelecer a conexão com o túnel reverso, conforme descrito acima, e depois voltar ao ssh no Mac local usando ssh -p 2000 i0n @ localhost. Então, como posso conseguir isso sem saber antecipadamente que preciso dessa funcionalidade? Em outras palavras, com uma conexão ssh existente e padrão. Isso é possível?
i0n 29/08/10
Obrigado b0fh, eu estava no meu caminho para a cama quando escrevi isso =) i0n - instintivamente, quero dizer que você não pode modificar uma conexão existente para fazer isso, mas o PuTTY pode fazê-lo, portanto deve haver uma maneira. Você sempre pode enviar uma nova conexão SSH com um túnel quando precisar voltar, mas acho que isso será feito de forma programática, para que não seja uma opção. Procure Expect - se algum idioma puder ser preparado para SSH, será isso.
James L
2

A sua máquina local está acessível a partir do servidor? Você pode fazer ping? Estou perguntando isso porque o que você está fazendo deve funcionar se sua máquina estiver acessível. Seu servidor está na internet ou na LAN, mesma sub-rede?

De qualquer forma, se você só precisa editar um arquivo, por que você simplesmente não usa o scp para copiar o arquivo na sua máquina local? Você pode usar o ssh para procurar o arquivo no servidor remoto e, quando tiver o caminho, digite sua máquina local (em outro terminal):

scp user@server:/path/to/file/on/server /local/path/to/save/file

Para colocar o arquivo de volta, scp novamente alternando os caminhos.

Obs: você não precisa da conexão ssh inicial para usar o scp - ele criará uma nova

Isso acima é se você precisar acessá-lo no terminal. No linux (e certamente no Mac, mas não sei como fazê-lo), você pode montar um local remoto ssh em redes e usar a conexão ao usar um disco local (este é sftp e a conexão está no formato: sftp://user@server:/path/to/mounte acho que é isso que você precisa, em vez de uma conexão de terminal remoto, para que você possa editar o arquivo diretamente com o aplicativo Mac.

Laurent
fonte
1

Você também pode dar uma olhada em sshfs(você precisa do MacFuse para isso). Isso permite montar diretórios na máquina remota e acessá-los como as pastas comuns da sua máquina. Além disso, você ainda pode sshentrar na máquina e criar / pesquisar os arquivos necessários. Transferi- los seria tão fácil quanto transferir arquivos locais.

Bran, o Abençoado
fonte