SSH: ช่องสัญญาณที่ไม่มีเชลล์บนเซิร์ฟเวอร์ ssh


63

ฉันต้องตั้งอุโมงค์ระหว่างสองครอบครัว

สำหรับสิ่งนี้ฉันใช้sshในวิธีนี้:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

หลังจากนั้นฉันลงชื่อเข้าใช้ SSH_SERVER ของฉัน

ฉันจะหลีกเลี่ยงคุณสมบัตินี้ได้อย่างไร! ฉันต้องตั้งอุโมงค์เท่านั้น ฉันไม่ต้องลงชื่อเข้าใช้ SSH_SERVER ของฉัน ...

ฉันได้ลองใช้ตัวเลือก -N แล้ว แต่มันทำให้เชลล์ไม่ว่าง


SSH -N -L xx: xx: xx user @ server & <- คุณเคยลองใช้มาก่อนไหม?
Lawrence

เฮ้คุณมีสิทธิ์ ฉันได้ลองใช้โฮสต์อื่นแล้วและตัวเลือก -N ใช้งานได้ ดังนั้นฉันจึงค้นพบว่าปัญหาเกิดขึ้นกับลูกค้าของฉัน (ฉันไม่รู้ว่าทำไมและฉันจะค้นหาเหตุผล) ขอบคุณมาก!
Bau Miao

1
man sshแสดงวิธีการ: ssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 พื้นหลังตัวเลือก -f ssh และคำสั่งระยะไกล `` sleep 10 '' ถูกระบุเพื่อให้จำนวนเวลา (ตัวอย่างเช่น 10 วินาที) เพื่อเริ่มบริการที่จะต้องถูกปรับ หากไม่มีการเชื่อมต่อภายในเวลาที่กำหนด ssh จะออกจากการทำงาน `` `
lionello

คำตอบ:


71

ดังที่ได้กล่าวไว้ในโพสต์อื่น ๆ หากคุณไม่ต้องการให้พรอมต์บนรีโมตโฮสต์คุณต้องใช้-Nตัวเลือกของ SSH แต่สิ่งนี้จะทำให้ SSH ทำงานต่อไปโดยไม่ต้องพรอมต์และเชลล์ไม่ว่าง

คุณเพียงแค่ต้องใส่ SSH'ing เป็นงานพื้นหลังที่มี&เครื่องหมาย:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server &

สิ่งนี้จะเรียกใช้ ssh tunneling ในพื้นหลัง แต่บางข้อความอาจปรากฏขึ้นโดยเฉพาะอย่างยิ่งเมื่อคุณพยายามเชื่อมต่อกับพอร์ตที่ไม่ฟัง (หากเซิร์ฟเวอร์ของคุณไม่เปิดใช้งาน) เพื่อหลีกเลี่ยงข้อความเหล่านี้จะวางไข่ในเปลือกของคุณในขณะที่ทำสิ่งอื่น ๆ คุณอาจเปลี่ยนเส้นทาง STDOUT / STDERR ไปเป็นโมฆะใหญ่:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server >/dev/null 2>&1 & 

ขอให้สนุกกับ SSH


17
นอกจากนี้คุณยังสามารถใช้ตัวเลือก ssh -fแทน&และเปลี่ยนเส้นทาง io
tkrennwa

49

-f -N คือสิ่งที่คุณกำลังมองหา:

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

3
เมื่อตั้งค่าอุโมงค์แล้วคุณจะปิดด้วยวิธีนี้ได้อย่างไร
magnetik

@magnetik ค้นหากระบวนการด้วยpsและkillมัน
neu242

13
@magnetik และ @ neu242 วิธีที่ดีกว่าคือใช้ "master socket" ssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...เพื่อให้คุณสามารถฆ่า connexion ได้ในภายหลังด้วยssh -S /tmp/file -o exit user@....(หรือ kill) ด้วยวิธีนี้ไม่จำเป็นต้อง ps คุณสามารถบอกให้สร้างไฟล์นั้นโดยอัตโนมัติใน ~ / .ssh / config
Metal3d

1
ฉันหมายถึง "control socket" ไม่ใช่ "master socket"
Metal3d

8
มันควรจะเป็นssh -S /tmp/file-sock -O exitไม่ใช่-o en.wikibooks.org/wiki/OpenSSH/Cookbook/ …
fetsh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.