Cygwin netcat nc ไม่สามารถแก้ปัญหาโฮสต์ผ่าน / etc / hosts


1

ฉันพยายามใช้ ssh เพื่อเข้าสู่เซิร์ฟเวอร์ระยะไกลและฉันมีการติดตั้ง ProxyCommand ใน ~ / .ssh / config เพื่อใช้พร็อกซี (ติดตั้งผ่าน PuTTY เพื่อเชื่อมต่อกับ VPN) ProxyCommand ใช้ nc เพื่อเชื่อมต่อผ่านพร็อกซี (ดังอธิบายในคำตอบ ฉันจะใช้ SSH กับพร็อกซี SOCKS 5 ได้อย่างไร ) แต่ดูเหมือนว่า nc ไม่สามารถแก้ไขชื่อโฮสต์ให้เป็น IP ผ่าน / etc / hosts ก่อนที่จะส่งไปยังพร็อกซีและพร็อกซีไม่ทราบวิธีการแก้ไขชื่อโฮสต์

ตัวอย่างเช่น

$ cat /etc/hosts
127.0.0.1       localhost
12.34.56.78     hostname1
12.34.56.79     hostname2


$ cat ~/.ssh/config
ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 %h %p

โปรดทราบว่าพอร์ต 7777 ถูกกำหนดค่าเป็นพอร์ตไดนามิกใน PuTTY

$ cat /etc/resolv.conf
lookup  file bind


$ cat /etc/nsswitch.conf
hosts:  files dns

ถ้าฉันใช้ ssh user@12.34.56.78 การเชื่อมต่อจะสำเร็จ แต่ถ้าฉันใช้ ssh user @ hostname1 แล้ว hostname1 จะถูกส่งไปยังพร็อกซีแทนที่จะแก้ไขเป็น 12.34.56.78 และการเชื่อมต่อล้มเหลว ไม่มีใครรู้ว่าการกำหนดค่าใด ๆ ที่จะต้องทำให้การแก้ปัญหาชื่อโฮสต์ netcat ผ่าน / etc / hosts ทำงานใน cygwin หรือไม่

ขอบคุณ


มีอะไรที่ต้องดำเนินการเพื่อโหลดการเปลี่ยนแปลงที่ฉันทำกับไฟล์การตั้งค่า?
Rusty Lemur

คำตอบ:


0

is / etc / hosts ถูกคั่นด้วยอย่างถูกต้องกับการลงท้ายบรรทัดใด ๆ (CR หรือ CRNL)?

ไม่ละเลย / etc / hosts และดูที่% windir% \ system32 \ drivers \ etc \ hosts โดยโอกาสใด ๆ


คุณสามารถขยายคำตอบได้ไหม? ไซต์นี้มีไว้สำหรับผู้ที่ไม่ใช่มืออาชีพและเราไม่สนับสนุนคำตอบสั้น ๆ
Canadian Luke

ฉันเชื่อว่า / etc / hosts ถูกคั่นด้วยอย่างถูกต้องกับฟีดบรรทัด UNIX เท่านั้น (ไม่มีการขึ้นบรรทัดใหม่) และฉันก็คัดลอกไฟล์จากตำแหน่ง Windows ไปยัง / etc / hosts ของ Cygwin หลังจากคัดลอกมันฉันวิ่ง sed -i 's / \ r // g' เพื่อลบอินสแตนซ์ของการคืนค่าขนส่ง
Rusty Lemur

Unix ใช้ LF CRLF เป็น bloat เฉพาะสำหรับ Windows
William T Froggard

0

สิ่งที่เกิดขึ้นคือคุณกำลังใช้การทดแทน sshd_config% h แต่ตามคู่มือแล้วนี่ไม่ได้หมายความว่าค่าทดแทนจะถูกประมวลผลล่วงหน้าด้วยวิธีใดก็ตาม

แต่เนื่องจากคำสั่งกำลังถูกส่งผ่านเชลล์คุณสามารถใช้ subshell เพื่อรันคำสั่งที่จะทำการจำแนกชื่อได้ดังนี้:

ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 $(perl -MSocket -le 'print inet_ntoa inet_aton shift' %h) %p

คำสั่งเฉพาะของมารยาท https://unix.stackexchange.com/questions/71379/host-lookup-that-respects-etc-hosts

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.