วิธีการ SSH ในไดเรกทอรีเฉพาะหรือไม่


39

ฉันลงชื่อเข้าใช้เซิร์ฟเวอร์บ่อยครั้งจากนั้นใส่ซีดีในไดเรกทอรีเฉพาะ เป็นไปได้หรือไม่ที่จะทำให้คำสั่งทั้งสองนี้เป็นหนึ่งเดียวได้ง่ายขึ้น?

ssh bob@foo  
cd /home/guest

ฉันต้องการหลีกเลี่ยงการเปลี่ยนแปลงอะไรใน 'foo' ถ้าเป็นไปได้เพราะฉันจะต้องล้างมันด้วยผู้ดูแลเซิร์ฟเวอร์ ฉันใช้ทุบตี แต่ฉันเปิดให้คำตอบในกระสุนอื่น ๆ

คำตอบ:


22

เพียงวางเป็นบรรทัดสุดท้ายของไฟล์ ~ bob / .bash_profile ของคุณใน foo:

cd /home/guest >& /dev/null

ตอนนี้ทุกครั้งที่คุณเข้าสู่ระบบ (ไม่ว่าจะโดย SSH หรืออย่างอื่น) คำสั่ง cd จะทำงาน ไม่จำเป็นต้องเล่นกับ ssh

ฉันรู้ว่าคุณเขียนว่าคุณ "ต้องการหลีกเลี่ยงการเปลี่ยนแปลงสิ่งใดใน 'foo' ถ้าเป็นไปได้ แต่ถ้าบัญชี bob @ foo เป็นของคุณการเปลี่ยน. bash_profile ของคุณเองควรเป็นที่ยอมรับหรือไม่?


2
ทำไมใช่ฉันคิดว่ามันจะใช้งานได้ดี ฉันไม่จำเป็นต้องได้รับอนุญาตจากฝ่ายไอทีเพื่อทำการเปลี่ยนแปลงนั้น คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับสาเหตุที่คุณต้องการ> & / dev / null ได้ไหม
spuder

6
&> /dev/nullผมคิดว่าควรจะเป็น มันป้องกันข้อความแสดงข้อผิดพลาดที่อาจปรากฏขึ้นในกรณีที่ cd ไม่สามารถเปลี่ยนไดเรกทอรีเป็น / home / directory หากคุณต้องการที่จะเห็นข้อความเหล่านั้นคุณสามารถแยกได้
konsolebox

5
>&และ&>เหมือนกันใน Bash สไตล์หลังเป็นที่ต้องการแม้ว่า

นอกจากนี้การเปลี่ยนเส้นทางไปยัง / dev / null ป้องกันไม่ให้ชื่อของไดเรกทอรีถูกสะท้อนบนหน้าจอซึ่ง "cd" อาจทำ
DanB

41

สิ่งนี้ใช้ได้กับ OpenSSH:

ssh -t bob@foo 'cd /home/guest && exec bash -l'

อาร์กิวเมนต์สุดท้ายทำงานในล็อกอินเชลล์ของคุณ -tธงส่งผ่านไปยังsshกองกำลังsshที่จะจัดสรรหลอกขั้วซึ่งเป็นสิ่งจำเป็นสำหรับเปลือกโต้ตอบ -lธงส่งผ่านไปยังbashเริ่มต้นทุบตีเป็นเปลือกเข้าสู่ระบบ


3
ฉันสงสัยว่าจะเพิ่มตัวเลือก -l เพื่อทุบตีจะเป็นประโยชน์เช่นกัน? ... && exec bash -l
konsolebox

1
@ Konsolebox: นั่นเป็นความคิดที่ดี ฉันได้เพิ่มเข้าไปในคำตอบของฉัน

17

คุณสามารถทำได้ด้วยวิธีนี้คล้ายกับโซลูชันของ @ EvanTeitelman:

$ ssh -t bob@foo "cd /tmp ; bash"

หรือถ้าคุณไม่รู้จักเชลล์ที่ปลายอีกด้าน:

$ ssh -t bob@foo "cd /tmp && exec \$SHELL"

หรือเช่นนี้

$ ssh -t bob@foo 'cd /tmp && exec $SHELL'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.