หมายเลขสถานีในข้อความแสดงข้อผิดพลาด ssh หมายถึงอะไร


12

ในตัวอย่างด้านล่างหมายเลขช่องตรงกับอะไร? เซิร์ฟเวอร์ใดอยู่ ลูกค้าคนไหน

  $ ssh -L1570:127.0.0.1:8899 root@thehost
    Password:
    Last login: Fri Aug  9 13:08:44 2013 from theclientip
    Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
    You have new mail.
    # channel 2: open failed: administratively prohibited: open failed
    channel 3: open failed: administratively prohibited: open failed
    channel 2: open failed: administratively prohibited: open failed

ไคลเอ็นต์ ssh ทำงานบน Windows 7 และเซิร์ฟเวอร์มีเซิร์ฟเวอร์ Tomcat ที่ทำงานบนพอร์ต 8899

Tomcat ไม่ได้ฟังบน 127.0.0.1 บนเครื่องรีโมตดังนั้นหากฉันเปลี่ยนคำสั่งssh -L1570:thehostpublicip:8899 root@thehostเป็นพอร์ตฟอร์เวิร์ด ดังนั้นฉันรู้ว่าการส่งต่อพอร์ตดูเหมือนว่าจะทำงานได้ดีบนเซิร์ฟเวอร์

ไฟล์ sshd config ของฉันมีสองบรรทัดต่อไปนี้:

# Port forwarding
AllowTcpForwarding yes

# If port forwarding is enabled, specify if the server can bind to INADDR_ANY.
# This allows the local port forwarding to work when connections are received
# from any remote host.
GatewayPorts yes

ฉันกำลังพยายามตั้งค่าการส่งต่อพอร์ตสำหรับกระบวนการอื่นไม่ใช่ Tomcat และฉันได้รับข้อความแสดงข้อผิดพลาดคล้ายกับข้อมูลข้างต้นดังนั้นฉันจึงพยายามเข้าใจความหมายของข้อความแสดงข้อผิดพลาด

คำตอบ:


21

จากเอกสารเกี่ยวกับพิธีสาร SSHเกี่ยวกับช่องทาง:

เซสชันเทอร์มินัลทั้งหมดการเชื่อมต่อที่ส่งต่อเป็นต้นเป็นช่องสัญญาณ ทั้งสองข้างอาจเปิดช่อง หลายช่องสัญญาณจะมีการมัลติเพล็กซ์เป็นการเชื่อมต่อเดียว

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

แชแนลถูกควบคุมการไหล อาจไม่มีการส่งข้อมูลไปยังช่องทางจนกว่าจะได้รับข้อความเพื่อระบุว่ามีพื้นที่หน้าต่างว่าง

การส่งต่อพอร์ต

คำสั่งที่คุณดูดี คุณแน่ใจหรือไม่ว่าบริการที่คุณพยายามเชื่อมต่อนั้นขึ้นอยู่กับการยอมรับการเชื่อมต่อ? ดูเหมือนว่าข้อผิดพลาดของช่องจะระบุว่าไม่ใช่

ช่องทางที่ใช้งานของฉันคืออะไร?

หากคุณมีการsshเชื่อมต่อที่ใช้งานอยู่คุณสามารถใช้คีย์ผสมต่อไปนี้เพื่อรับความช่วยเหลือ:

Shift+ ~ตามด้วยShift+?

$ ~?
Supported escape sequences:
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
debug2: channel 2: written 480 to efd 8

จากนั้นคุณสามารถใช้คีย์ผสมนี้เพื่อรับรายการช่องที่ใช้งานอยู่:

Shift+ ~ตามด้วยShift+#

$ ~#
The following connections are open:
  #2 client-session (t4 r0 i0/0 o0/0 fd 6/7 cc -1)
debug2: channel 2: written 93 to efd 8

4

หาก Tomcat ไม่ได้ฟังบนลูปแบ็ค (127.0.0.1) พอร์ตที่ส่งต่อไปจะแจ้งข้อความแสดงข้อผิดพลาดที่คุณได้รับ

ถ้าฉันทำ ssh โดยมีพอร์ตส่งต่อไปยังพอร์ตที่ไม่ฟัง (เช่น: ssh -L1234:127.0.0.1:9999 10.0.0.1- โดยที่ไม่มีกระบวนการใดที่ 10.0.0.1 ถูกผูกไว้กับพอร์ต 9999 ที่ 127.0.0.1) ฉันได้รับข้อผิดพลาดเดียวกัน:

channel 2: open failed: administratively prohibited: open failed

คุณสามารถค้นหาว่าช่องใดที่ถูกอ้างถึงโดยการเพิ่ม-vvvลงใน ssh ของคุณ

ssh -vvv -L1570:127.0.0.1:8899 root@thehost

พอร์ตใดคือการรับฟัง "กระบวนการอื่น" (และที่อยู่ IP ใด) netstat -tulpnจะยืนยันว่าพอร์ตและกระบวนการ IP ใดบนเซิร์ฟเวอร์ของคุณใช้ -L จะต้องชี้ไปยังที่อยู่และพอร์ตที่กำลังรับฟังอยู่


ฉันทำซ้ำไม่ได้ คุณเปิดใช้งานพารามิเตอร์ ssh ในไคลเอนต์และ / หรือเซิร์ฟเวอร์เพื่อรับสิ่งนี้หรือไม่?
slm

Nope (มาตรฐาน 'ออกนอกกรอบ' กำหนดค่าทั้งสองด้าน) เท่าที่ฉันสามารถหาคุณได้connect failed: Connection refusedเมื่อไฟร์วอลล์ปฏิเสธการเชื่อมต่อ administratively prohibited: open failedอยู่ในโฮสต์ที่ไม่มีไฟร์วอลล์
Drav Sloan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.