Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

2 SSH-Server über Proxy erreichen

Mitglied: dirk79

dirk79 (Level 1) - Jetzt verbinden

25.01.2007, aktualisiert 18.02.2007, 5211 Aufrufe, 3 Kommentare

2x SSH an Port 443 und 22, jedoch nur Proxy-Port 443 offen...

Hallo liebe Admins!

Ich schildere einfach mal stichwortartig:

PC zu Hause:
---
  • Fritz!Box: Dropbear SSH-Server installiert. Lauscht an Port 22. Port 22 in´s INet freigegeben.
  • Rechner an Fritz!Box: openSSH. Ebenfalls Port 22. NAT (Fritz!Box) 443->22

PC im Büro:
---
  • HTTP-Proxy. Offene Ports: 80 und 443
  • PuTTY: Tunnels noch und nöcher

Soweit alles ok.
Mein "Problem":
Ich möchte meinen Rechner zu Hause nur bei Bedarf hochfahren.
Bedeutet: Ich brauche zuerst eine SSH zur Box, damit ich das WOL-Script ausführen kann.
Wenn der Rechner dann oben ist, brauche ich die SSH der Box nicht mehr. Dann möchte ich mich am SSH-Server des Rechners anmelden.
=> Port 22 wird aber vom Proxy unterbunden!
...Und den Port 80 geb ich nicht her, da läuft der WWW-Server und somit mein Wiki (weswegen ich auch eigentlich den ganzen Aufwand treibe;)

Meine (einzige) Idee bis jetzt:
Ich programmiere mir einen Client, der auf dem Remote-PC läuft und nach dem Booten gestartet wird. Der Client loggt sich (per Telnet im LAN zu Hause) ein und deaktiviert (oder ändert den Port) des SSH-Servers der Box. Beim Runterfahren gleiches Spiel rückwärts...
Würde auch funktionieren, kostet mich aber bestimmt 2-5 Stunden meiner Freizeit ;)
Ich hab auch schon versucht, nach dem Booten die Portfreigabe (Umleitung 443->22) per WebInterface wieder auf 22->22 umzustellen, aber die Box merkt, daß sie selbst den Port 22 benutzt und verbietet mir das deswegen.

Das kanns doch nicht sein!
Da gibt´s doch bestimmt ne elegantere, schnellere, Lösung als den o.e. "Spezial-Client" !-)
Vll. weiß ja jemand von euch Rat...

Gruß und Danke,
Dirk.
Mitglied: dirk79
26.01.2007 um 15:12 Uhr
Hat denn keiner auch nur eine Idee für einen Workaround?
Ich hab mal ne halbe Stunde in Google und "+PHP +SSH" investiert,
bin aber zu dem Schluss gekommen, daß ich nicht noch mehr Zeit in
die Suche nach einem Provider reinstecke, der libssh zur Verfügung stellt.
Oder kennt jemand einen (kostenlosen) Provider, der PHP mit libssh anbietet?
Wenn also niemand mehr ne Idee hat, dann muss ich wohl in den
sauren Apfel beißen und diesen "Spezial-Telnet-Client" programmieren

Gruß, Dirk.
Bitte warten ..
Mitglied: dirk79
18.02.2007 um 16:23 Uhr
Ok, ich hab mir die Zeit genommen und diesen Client programmiert.
Wer außer mir sonst noch Interesse daran hat, der kann ihn hier runterladen: http://tinyurl.com/2puk3o
Wer prinzipiell erst anderer Leute exe untersucht, dem sei gesagt, daß das File mit upx gepackt ist.
Syntax: texec [fritz-ip] [fritz-password] [exe]
Folgende 2 Scripte habe ich mir dazu geschrieben:
01.
# Temporäre Kopie der Datei "ar7.cfg" erstellen 
02.
cat /var/flash/ar7.cfg > /var/tmp/ar7.cfg 
03.
# Box-SSH-Server auf 22 erreichbar machen: 
04.
sed -e "s/tcp 0.0.0.0\:443 0.0.0.0\:22/tcp 0.0.0.0\:22 0.0.0.0\:22/g" /var/tmp/ar7.cfg > /var/tmp/ar7.cfg.1 
05.
# PC-SSH-Server-Weiterleitung (443->22) einschalten: 
06.
sed -e "s/# tcp 0.0.0.0\:443 192.168.178.22\:22/tcp 0.0.0.0\:443 192.168.178.22\:22/g" /var/tmp/ar7.cfg.1 > /var/flash/ar7.cfg 
07.
# PC starten. WakeOnLan-Script ausführen: 
08.
/var/tmp/start_mypc 
09.
# Fritz!Box rebooten... 
10.
/sbin/reboot
01.
# Temporäre Kopie der Datei "ar7.cfg" erstellen 
02.
cat /var/flash/ar7.cfg > /var/tmp/ar7.cfg 
03.
# Box-SSH-Server auf 443 erreichbar machen: 
04.
sed -e "s/tcp 0.0.0.0\:22 0.0.0.0\:22/tcp 0.0.0.0\:443 0.0.0.0\:22/g" /var/tmp/ar7.cfg > /var/tmp/ar7.cfg.1 
05.
# PC-SSH-Server-Weiterleitung (443->22) ausschalten: 
06.
sed -e "s/tcp 0.0.0.0\:443 192.168.178.22\:22/# tcp 0.0.0.0\:443 192.168.178.22\:22/g" /var/tmp/ar7.cfg.1 > /var/flash/ar7.cfg 
07.
# Fritz!Box rebooten... 
08.
/sbin/reboot
Wenn das letzte Script im Verzeichnis "/var/tmp" liegt, dann würde der Aufruf von texec folgendermaßen aussehen:
texec 192.168.fritz.ip web-passwort /var/tmp/box_ssh_to_443

Der Client wird dann mit diesen Parametern kurz vor dem Herunterfahren des PCs aufgerufen.

Für mich funktioniert`s gut.
Gruß, Dirk.
Bitte warten ..
Mitglied: dirk79
18.02.2007 um 16:30 Uhr
PS: Der Source-Code des Clients
Ist mit geringen Änderungen auch mit einem Linux zu kompilieren.
01.
/////////////////////////////////////////////////////////////////////////////// 
02.
// INCLUDES 
03.
/////////////////////////////////////////////////////////////////////////////// 
04.
#include "stdio.h" 
05.
#include "stdlib.h" 
06.
#include "windows.h" 
07.
#include "winsock.h" 
08.
/////////////////////////////////////////////////////////////////////////////// 
09.
 
10.
 
11.
/////////////////////////////////////////////////////////////////////////////// 
12.
// DEFINES 
13.
/////////////////////////////////////////////////////////////////////////////// 
14.
#define PORT 23 
15.
#define PROGINFO "usage: texec [fritz-ip] [fritz-password] [exe]" 
16.
/////////////////////////////////////////////////////////////////////////////// 
17.
 
18.
#define BUFFER_SIZE 4096 
19.
 
20.
/////////////////////////////////////////////////////////////////////////////// 
21.
 
22.
char* passwd; 
23.
char* exe; 
24.
 
25.
int handling(int sock) 
26.
27.
   char buffer[BUFFER_SIZE]; 
28.
   int bytes; 
29.
 
30.
   static int state = 0; 
31.
 
32.
   bytes = recv(sock, buffer, sizeof(buffer) - 1, 0); 
33.
   if (bytes == -1) 
34.
      return -1; 
35.
   buffer[bytes] = '\0'; 
36.
 
37.
   if(!state) 
38.
39.
      if(strstr(buffer,"password") != NULL) 
40.
41.
         state++; 
42.
         printf("Logging in...\n"); 
43.
         send(sock,passwd,strlen(passwd),0); 
44.
45.
46.
   else if(state == 1) 
47.
48.
      if(!bytes) 
49.
50.
         printf("Login failed. Check password...\n"); 
51.
         return 0; 
52.
53.
      if(strstr(buffer,"#") != NULL) 
54.
55.
         state++; 
56.
         printf("Starting program...\n"); 
57.
         send(sock,exe,strlen(exe),0); 
58.
         Sleep(1000); 
59.
60.
61.
   else if(state == 2) 
62.
63.
      printf("%s", buffer); 
64.
      return -1; 
65.
66.
 
67.
   return bytes; 
68.
69.
 
70.
 
71.
void freeStrings(void) 
72.
73.
   free((void*)passwd); 
74.
   free((void*)exe); 
75.
76.
 
77.
/////////////////////////////////////////////////////////////////////////////// 
78.
// MAIN FUNCTION 
79.
/////////////////////////////////////////////////////////////////////////////// 
80.
int main(int argc, char* argv[]) 
81.
82.
	// The Variables 
83.
	int Count; 
84.
	UINT Option; 
85.
	WORD Version; 
86.
	SOCKET Socket; 
87.
	WSADATA WSAData; 
88.
	SOCKADDR_IN Address; 
89.
 
90.
   if(argc < 4) 
91.
92.
	   // Show Program Info 
93.
	   printf("\n"); 
94.
	   printf(PROGINFO); 
95.
	   printf("\n \n"); 
96.
      return 0; 
97.
98.
 
99.
   passwd = (char*)malloc(strlen(argv[2])+3); 
100.
   exe = (char*)malloc(strlen(argv[3])+3); 
101.
 
102.
   if(!passwd ||!exe) 
103.
104.
      printf("Out of memory"); 
105.
      return -1; 
106.
107.
 
108.
   strcpy(passwd,argv[2]); 
109.
   strcat(passwd,"\r\n"); 
110.
   strcpy(exe,argv[3]); 
111.
   strcat(exe,"\r\n"); 
112.
 
113.
	// Non-Unix Startup Routine 
114.
	if (WSAStartup(MAKEWORD(2, 0), &WSAData) != 0) 
115.
116.
		printf("Error: Startup failed. \n"); 
117.
      freeStrings(); 
118.
		return -1; 
119.
120.
 
121.
	// Zero-Fill Address Struct 
122.
	memset(&Address, 0, sizeof(SOCKADDR_IN)); 
123.
 
124.
	// Set IPv4 Family 
125.
	Address.sin_family=AF_INET; 
126.
 
127.
	// Set Destination IP-Address 
128.
   Address.sin_addr.s_addr = inet_addr(argv[1]); 
129.
 
130.
		// Set actual Port 
131.
		Address.sin_port = htons(PORT); 
132.
 
133.
		// Socket Open 
134.
		if ((Socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) 
135.
136.
			printf("Error: Could not create Socket. \n");  
137.
         freeStrings(); 
138.
			return -1; 
139.
140.
 
141.
		// Disable Socket Option SO_KEEPALIVE 
142.
		Option = 0; 
143.
		if (setsockopt(Socket, SOL_SOCKET, SO_KEEPALIVE, (char *) &Option, sizeof(Option)) != 0) 
144.
145.
			printf("Error: Could not set socket option. \n"); 
146.
			printf("%d", WSAGetLastError());        
147.
         freeStrings(); 
148.
			return -1; 
149.
150.
 
151.
		// Enable Socket Option SO_DONTLINGER 
152.
		Option = 1; 
153.
		if (setsockopt(Socket, SOL_SOCKET, SO_DONTLINGER, (char *) &Option, sizeof(Option)) != 0) 
154.
155.
			printf("Error: Could not set socket option. \n"); 
156.
			printf("%d", WSAGetLastError());  
157.
         freeStrings(); 
158.
			return -1; 
159.
160.
 
161.
		// Socket Connect 
162.
		if (connect(Socket, (SOCKADDR*)&Address, sizeof(SOCKADDR)) != SOCKET_ERROR) 
163.
164.
			// Open Port 
165.
			printf("Connected...\n"); 
166.
         while(handling(Socket) > 0); 
167.
			printf("Disconnecting...\n"); 
168.
169.
		else 
170.
171.
			// Closed Port 
172.
			printf("Could not start telnet session", Count); 
173.
174.
 
175.
      freeStrings(); 
176.
 
177.
		// Socket Close 
178.
		if (closesocket(Socket) != 0) 
179.
180.
			printf("Error: Could not close socket. \n"); 
181.
			return -1; 
182.
183.
 
184.
	// Non-Unix Cleanup Routine 
185.
	if (WSACleanup() != 0) 
186.
187.
		printf("Error: Cleanup failed. \n"); 
188.
		return -1; 
189.
190.
 
191.
	// Exit 
192.
	return 0; 
193.
}
Bitte warten ..
Ähnliche Inhalte
Linux Netzwerk

2 VPS Server mit selber Domäne erreichen

gelöst Frage von SusikleineLinux Netzwerk6 Kommentare

Guten Morgen, ich bin eine junge Computer begeisterte Frau! und habe eine Frage die mir auf der Seele brennt! ...

LAN, WAN, Wireless

Server auf einem Switch erreichen sich nicht

gelöst Frage von eegg125LAN, WAN, Wireless25 Kommentare

Guten Morgen liebe Admins, folgendes Problem: Wir haben bei einem Kunden 2 Videoserver. Diese erreichen sich via Ping problemlos. ...

Hosting & Housing

Server von außen erreichen

gelöst Frage von BromBariumHosting & Housing3 Kommentare

Hallo am Sonntagmorgen, mein Problem ist folgendens: Ich habe einen Windows-Server auf dem ich gerne versch. Dienste anbieten würde, ...

Debian

SSH key für Server nicht verwendbar

Frage von jmzbekiDebian5 Kommentare

Hallo, ich habe einen Server der über einen SSH key zugriff gewährt. Alles lief wunderbar, und ich habe den ...

Neue Wissensbeiträge
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 1 TagHumor (lol)4 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 2 TagenExchange Server6 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 2 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 3 TagenVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
Netzwerke
Netzwerk-Architektur mit VLANs
Frage von niLuxxNetzwerke25 Kommentare

Liebe Community, Ich hätte eine kurze Frage an euch. Ich werde in Kürze das Netzwerk unserer (sehr) kleinen Firma ...

Windows Server
WSUS nach Upgrade - kein Start mehr
gelöst Frage von Ghost108Windows Server9 Kommentare

Hallo zusammen, habe einen Windows Server 2012 welcher als WSUS dienst. Jetzt wurde ein Upgrade auf Server 2016 durchgeführt ...

Netzwerke
SSH - Wieso werde ich nach VPN Verbindung rausgeschmissen?
Frage von VernoxVernaxNetzwerke9 Kommentare

Hallo, ich habe es endlich geschafft mein Handy mit einer VPN Verbindung an meinen Router anzuschließen. Nach der Login ...

Microsoft
Ist es möglich ein reines Volume C Datenbackup in eine Hyper-V VM zu konvertieren?
Frage von Frank84Microsoft8 Kommentare

Hallo zusammen, ich habe hier ein Backup vorliegen, das ausschließlich das komplette C:\ Volume eines physischen Server 2012 enthält. ...