Próbuję dostać się do mojego serwera SSH w Internecie z sieci korporacyjnej. Wszystkie połączenia z zewnętrznym Internetem muszą być proxy za pośrednictwem serwera, który sprawdza hash NTLM każdego klienta na każde żądanie. Używam do tego Cntlm , a to działa tylko w połowie. Działa dobrze w przypadku połączeń opartych na HTTP, ale nie działa w przypadku połączeń w stylu SSH. Wiem to, ponieważ mogę połączyć się z wtyczką kontroli pakietów Sublime Text , aby pobrać i zaktualizować wtyczki. Nie mogę go jednak użyć do SSH na moim serwerze przy użyciu konfiguracji tunelu Cntlm.
Przeglądając dzienniki Cntlm, widzę następujące ...
cntlm: PID 1460: 127.0.0.1 TUNNEL ts.io:443
Tunneling to ts.io:443 for client 6...
Starting authentication...
NTLM Request:
Domain: domain.tld
Hostname: D-HOSTNAME
Flags: 0xA208B205
NTLM Handshake (typ 1)
Sending PROXY auth request...
Proxy-Connection => keep-alive
Proxy-Authorization => NTLM [REDACTED]
Content-Length => 0
Odczytywanie odpowiedzi autoryzacji PROXY ...
HEAD: HTTP/1.1 407 Proxy Authentication Required ( Access is denied. )
Via => 1.1 FOLLICLE
Proxy-Authenticate => NTLM [REDACTED]
Connection => Keep-Alive
Proxy-Connection => Keep-Alive
Pragma => no-cache
Cache-Control => no-cache
Content-Type => text/html
Content-Length => 0
NTLM Challenge:
Challenge: 4AC9211DC2875FFF (len: 178)
Flags: 0xA2898205
NT domain: NTDOMAIN
Server: PROXY
Domain: domain.tld
FQDN: proxy.domain.tld
TLD: domain.tld
TBofs: 64
TBlen: 114
ttype: 0
NTLMv2:
Nonce: CB4E6617ABF19C24
Timestamp: -1581153408
NTLM Response:
Hostname: 'D-HOSTNAME'
Domain: 'domain.tld'
Username: 'username'
Response: '[REDACTED]' (162)
Response: '[REDACTED]' (24)
Sending real request:
Proxy-Connection => keep-alive
Proxy-Authorization => NTLM [REDACTED]
I w końcu to rozumiem ...
Reading real response:
HEAD: HTTP/1.1 200 Connection established
Via => 1.1 PROXY
Connection => Keep-Alive
Proxy-Connection => Keep-Alive
Ok CONNECT response. Tunneling...
tunnel: select cli: 6, srv: 7
Joining thread 537272664; rc: 0
Ponieważ zapora zezwala na połączenia z Internetem zewnętrznym tylko przez serwer proxy z portu 80 i portu 443, zrekonfigurowałem mój serwer SSH, aby akceptował połączenia z portu 443.
Problem, który widzę, polega na tym, że gdy spróbuję połączenia SSH, połączenie zgłasza przekroczenie limitu czasu połączenia z Sublime Text podczas korzystania z wtyczki SFTP . Korzystanie z PuTTY daje natychmiastowe rezultaty PuTTY Fatal Error: Server unexpectedly closed network connection
. Rozszerzenie Google Chrome Secure Shell daje mi bardziej szczegółowy błądssh_exchange_identification: Connection closed by remote host
NaCl plugin exited with status code 255.
Konfiguracja Cntlm
# The username of the client you wish to masquerade as.
#
Username username
# The domain name of the network you are connected too.
#
Domain domain.tld
# The Password, LM, NTLM, or NTLMv2 Password.
# You should leave this blank and then start cntlm
# with the -M arg to get the hash information, then
# place that information here.
#
PassNTLMv2 [REDACTED]
# Specify the netbios hostname cntlm will send to the parent
# proxies. Normally the value is auto-guessed.
#
Workstation D-HOSTNAME
# List of parent proxies to use. More proxies can be defined
# one per line in format <proxy_ip>:<proxy_port>
#
Proxy PROXY:8080
# Specify the port cntlm will listen on
# You can bind cntlm to specific interface by specifying
# the appropriate IP address also in format <local_ip>:<local_port>
# Cntlm listens on 127.0.0.1:3128 by default
#
Listen 3128
# Use -M first to detect the best NTLM settings for your proxy.
# Default is to use the only secure hash, NTLMv2, but it is not
# as available as the older stuff.
#
# This example is the most universal setup known to man, but it
# uses the weakest hash ever. I won't have it's usage on my
# conscience. :) Really, try -M first.
#
Auth NTLMv2
# Tunnels mapping local port to a machine behind the proxy.
# The format is <local_port>:<remote_host>:<remote_port>
#
Tunnel 1443:ts.io:443
To jest sekcja konfiguracji, której używam dla tunelu w Cntlm.
Konfiguracja PuTTY
IP:PORT localhost:1443
Tego używam do połączenia PuTTY.
Wzniosły tekst
"http_proxy": "http://localhost:3128",
Masz jakiś pomysł, co mogę zrobić, aby to naprawić? Chciałbym włączyć SSH do mojego serwera, musi istnieć sposób, aby to zrobić tylko przy użyciu funkcji tunelowania Cntlm, po prostu nie wiem, co robię źle.
Mogę powiedzieć, że mogę połączyć się z moim serwerem SSH przy użyciu portu 443 spoza sieci firmowej.