मेरे पास एक सर्वर है जिसे हम तीन-आईपी पते 100.200.130.121, 100.200.130.122, और 100.200.130.123 के साथ हब-Server.tld कहेंगे। मेरे पास तीन अलग-अलग मशीनें हैं जो एक फ़ायरवॉल के पीछे हैं, लेकिन मैं एसएसएच का उपयोग प्रत्येक आईपी पते पर एक मशीन को आगे पोर्ट करने के लिए करना चाहता हूं। उदाहरण के लिए: मशीन-वन को 100.200.130.121 को पोर्ट 22 पर एसएसएच के लिए सुनना चाहिए, जबकि मशीन-दो को 100.200.130.122 पर समान होना चाहिए, और इसी तरह बंदरगाहों पर विभिन्न सेवाओं के लिए जो सभी मशीनों में समान हो सकती हैं।
SSH मैन पेज ने -R [bind_address:]port:host:hostport
सूचीबद्ध किया है कि मेरे पास गेटवे पोर्ट सक्षम हैं, लेकिन -R
एक विशिष्ट आईपी पते के साथ उपयोग करते समय , सर्वर अभी भी सभी इंटरफेस में पोर्ट पर सुनता है:
मशीन एक:
# ssh -NR 100.200.130.121:22:localhost:22 root@hub-server.tld
हब-Server.tld (पोर्ट 2222 पर SSH के लिए सुनता है):
# netstat -tan | grep LISTEN
tcp 0 0 100.200.130.121:2222 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN
क्या एसएसएच को मशीन के लिए एक विशिष्ट आईपी पते पर केवल कनेक्शन देने का एक तरीका है, इसलिए मैं एक ही समय में अन्य आईपी पते पर 22 पोर्ट को सुन सकता हूं, या क्या मुझे iptables के साथ कुछ करना होगा? यहाँ मेरे ssh config में सभी लाइनें हैं जो टिप्पणी / चूक नहीं हैं:
Port 2222
Protocol 2
SyslogFacility AUTHPRIV
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes
ClientAliveInterval 30
ClientAliveCountMax 1000000
UseDNS no
Subsystem sftp /usr/libexec/openssh/sftp-server
clientspecified
केवल "सक्षम" कहने के बजाय आवश्यक था: "दूरस्थ bind_address निर्दिष्ट करना केवल तभी सफल होगा जब सर्वर का गेटवेपोर्ट विकल्प सक्षम हो (sshd_connigig (5) देखें)"। उस से, मुझे लगा कि इसे बस सेट करने की जरूरत हैyes
।