SSH Tunnel para a Área de Trabalho Remota via Servidor Intermediário Parte II

6

Eu perguntei anteriormente como configurar dois túneis SSH usando um servidor intermediário para executar o Remote Desktop através deles e consegui fazê-lo funcionar. Agora, estou tentando fazer o mesmo, usando as mesmas máquinas, mas em ordem inversa. Aqui está a configuração:

  1. PC com Windows 7 em uma rede privada, sentado atrás de um firewall.
  2. Servidor Linux de acesso público, que tem acesso ao PC.
  3. Windows 7 laptop, em casa, no qual desejo fazer o Remote Desktop do PC.

Eu uso o Putty no laptop para criar um túnel reverso dele para o servidor Linux: R60666 localhost:3389 .

Eu uso o Putty no PC para criar um túnel regular dele para o servidor Linux: L60666 localhost:60666 .

Eu faço o SSH para o servidor Linux e executo o telnet localhost 60666 e ele parece produzir a saída esperada, conforme descrito nas dicas de depuração que recebi aqui .

Eu tento conectar a Área de Trabalho Remota do PC ao laptop: localhost:60666 . Ele pede meu nome de usuário e senha, clico em OK e bloqueia minha sessão atual no laptop (então vejo a tela de boas vindas no laptop em vez da minha área de trabalho), mostra a mensagem "Bem-vindo" na tela Área de Trabalho Remota e apenas fica preto. Ele não se desconecta, não fornece nenhum erro e eu não consigo executar nenhuma ação na tela da Área de Trabalho Remota. Eu tentei a mesma configuração com um laptop com Windows XP e estou com os mesmos sintomas. Eu também tentei usar portas diferentes do que 60666, mas nada mudou. Alguém tem alguma idéia do que estou fazendo errado?

Atualização : Como apontado por @jwinders, não consigo executar telnet PC 3389 diretamente do servidor Linux. Como o Firewall do Windows tem uma regra para permitir todas as conexões na porta 3389, não tenho idéia do que está bloqueando. Felizmente, sou capaz de criar um túnel SSH da máquina Linux para o PC ssh 3389:localhost:3389 'domain\user'@PC .

    
por Mihai Todor 11.07.2012 / 14:49

6 respostas

2

Não vejo nada de errado com seus túneis SSH. Conectando-se a localhost: 60666 no PC deve acabar em localhost: 3389 no Laptop. E o fato de você estar recebendo uma tela de login confirma essa avaliação.

Um pouco de googling na tela em branco me leva a este artigo da base de conhecimento da Microsoft: link . Afirma que uma tela em branco pode ser devido a possíveis incompatibilidades de tamanho de MTU:

Verity that the server, client and the network equipment using the "MTU" size.

Dadas as quantidades justas de saltos de rede, firewalls e o que você tem, a fragmentação de pacotes é bastante provável :) A maioria das máquinas Windows usa um MTU de 1300 por padrão, enquanto a maioria das caixas Linux tem 1500 (o valor máximo permitido para LAN, não considerando jumbo frames). Você pode tentar diminuí-los para reduzir a fragmentação.

Veja também:

por 18.07.2012 / 10:28
1

Uma VPN não seria mais apropriada? O OpenVPN é super simples de configurar. Aqui está uma amostra de configuração e alguns links para guiá-lo pelo processo de criação de certificados.

Basta configurar o intermediário para ser o host e os convidados podem discar e ainda se comunicar uns com os outros.

apt-get install openvpn
mkdir /etc/openvpn/easy-rsa
mkdir -p /etc/openvpn/ccd/client_server
touch /etc/openvpn/ipp.txt
cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca 
./build-key-server server
./build-dh
cd /etc/openvpn/easy-rsa/keys
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt -certfile ca.crt

Em seguida, crie um novo arquivo /etc/openvpn/client_server.conf e coloque o seguinte, alterando o SERVER_IP_ADDRESS conforme apropriado

local SERVER_IP_ADDRESS
port 8443
proto udp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
pkcs12 /etc/openvpn/easy-rsa/keys/server.p12
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
ifconfig-pool-persist /etc/openvpn/ipp.txt
server 192.168.100.0 255.255.255.0
client-config-dir /etc/openvpn/ccd/client_server
ccd-exclusive
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
reneg-sec 0
client-to-client

Em seguida, crie uma chave por usuário que se conectará e crie o arquivo de configuração no diretório ccd

./build-key-pkcs12 [email protected]
echo "ifconfig-push 192.168.100.2 255.255.255.0" > /etc/openvpn/ccd/client_server/[email protected]

O endereço IP DEVE ser adequado para uma sub-rede / 30 (veja link ), pois há apenas 2 endereços disponíveis (servidor e cliente) por conexão. Então, o seu próximo IP de cliente disponível seria 192.168.100.6 e assim por diante.

Agora você tem IPs estáticos por usuário conectado.

Em seguida, forneça o arquivo the [email protected] para o usuário final e use o seguinte arquivo de configuração

client
dev tun
proto udp
remote SERVER_IP_ADDRESS 8443
pkcs12 [email protected]
resolv-retry infinite
nobind
ns-cert-type server
comp-lzo
verb 3
reneg-sec 0
    
por 18.07.2012 / 22:38
1

Eu corri para o mesmo problema de tela preta + desconexão hoje, usando o putty como meu cliente. Eu encontrei uma solução eventualmente.

Eu mudei de putty para tunnelier bitvise e configurei uma conexão S2C com as seguintes configurações:

listen if:0.0.0.0
listen port:13389
destination host:localhost
dest port:3389

Por acaso, eu estou usando o servidor bitvise ssh no meu servidor, então isso pode ser apenas uma combinação feliz para dois produtos feitos pelo mesmo fornecedor. Seria ótimo se isso resolvesse os problemas para os outros.

Para o registro, eu não sou afiliado com esses caras de forma alguma.

    
por 24.03.2015 / 11:20
0

eu acho que você pode fazer todo o conf do seu laptop

configure uma conexão de massa para a caixa linux no seu laptop. depois, em 'connection' > 'SSH' > 'tunnels', coloque 60666 no campo 'source port' e verifique se o botão de opção Local está selecionado. no 'destino' você entra em win7-box-name-or-ip: 3389.

salve tudo isso e ele deve permitir que você abra uma sessão putty no linux-box, que cria automaticamente um tráfego de encaminhamento de túnel para o localhost (seu laptop): 60666 para win7: 3389

se você estiver fazendo isso na linha de comando, deve ser algo como

ssh -L60666:win7:3389 linux-box
    
por 11.07.2012 / 22:13
0

Descobri que, a menos que todos os usuários estivessem completamente desconectados da máquina, eu obteria uma tela em branco após inserir as credenciais. Portanto, certifique-se de sempre fazer logoff.

    
por 10.10.2012 / 03:52
0

Se você estiver executando a sessão ssh dentro da conta de usuário (usando um programa como o putty.exe), quando você tentar fazer o login via rdp, ela interromperá essa conexão, fazendo com que a sessão do rdp seja interrompida. O que você precisa fazer é executar o túnel ssh como um serviço que não será interrompido.

    
por 24.03.2015 / 15:10