บายพาส ~ / .profile บนรีโมตล็อกอินไปยังเซิร์ฟเวอร์ linux


32

มีวิธีการข้ามหรือป้องกันการดำเนินการของ~/.profileเมื่อเข้าสู่เซิร์ฟเวอร์ Linux ระยะไกลโดยใช้ ssh หรือผงสำหรับอุดรู?


ทำไมคุณต้องการทำเช่นนี้? ทำไมไม่เพียงแก้ไขค่าในไฟล์? (เป็นข้อมูลส่วนตัวของคุณหลังจากทั้งหมด)
Telemachus

7
นี้จะเป็นประโยชน์ตัวอย่างเช่นถ้ามีคนเมาขึ้นไฟล์ .profile และคุณไม่ได้มีการเข้าถึงโดยตรงไปยังระบบ :)
monkey_p

ที่ว่าสถานการณ์ที่ผมพบว่าตัวเองอยู่ใน monkey_p
แอนดรู Hampton

คำตอบ:


30

สำหรับทุบตี:

$ ssh hostname "bash --noprofile"

6
คุณยังต้องการ-tตัวเลือกด้วยฉันคิดว่า
grawity

2
ssh -t ชื่อโฮสต์ "bash --noprofile" หาก -t ไม่ได้อยู่ที่นั่นฉันได้รับข้อผิดพลาด "มาตรฐานจะต้องเป็น tty"
nitins

14

หากคุณกำลังมองหาที่จะปิดการใช้งานสคริปต์การเข้าสู่ระบบที่ทุกท่านสามารถใช้--noprofileธงเพื่อปิดการใช้งาน/etc/profile, ~/.profileฯลฯ และ--norcจะปิดการใช้งาน~/.bashrcเช่นดังนั้น:

$ ssh 127.0.0.1 "bash --noprofile --norc"

โปรดทราบว่าคุณสามารถเปิดเปลือกอื่นได้หากมีอยู่ ฉันต้องใช้สิ่งนี้หลังจากเลอะในchsh:

$ ssh 127.0.0.1 sh

การทำเช่นนี้จะส่งคุณไปที่เชลล์ว่างเปล่า (ไม่มีพรอมต์) ดังนั้นให้กำหนดlsเพื่อให้แน่ใจว่าใช้งานได้


4

หากเครื่องเป้าหมายของคุณอยู่ใน bash shell:

user@host:/$ ssh hostname "bash --noprofile"

หรือหากมีโปรไฟล์อื่นที่คุณต้องการใช้

user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"

1

นอกจากนี้ลองใช้โปรแกรม FTP เช่น WinSCP เพื่อลบไฟล์เข้าสู่ระบบที่ผิดพลาด นี่จะเป็นการละทิ้ง แต่อย่างน้อยคุณควรจะสามารถเข้าสู่เชลล์เริ่มต้นได้


หรืออาจแค่เปลี่ยนชื่อ
jezmck

1

ดังที่คนอื่น ๆ ได้กล่าวไว้การใช้กับ--noprofileแฟล็กเมื่อคุณเริ่มการเชื่อมต่อจะใช้งานได้แม้ว่าคุณจะใช้เชลล์ตัวอื่นอาจเป็นตัวเลือกหรือไม่ก็ได้

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

if [ "$SSH_CONNECTION" != "" ]; then
  echo Logging in with ssh
  return
else
  echo Logging in with something that is not ssh
fi

# rest of your profile goes here

returnจะข้ามส่วนที่เหลือของสคริปต์ถ้า$SSH_CONNECTIONตัวแปรสภาพแวดล้อมมีการตั้งค่าซึ่งตามปกติจะถูกสร้างขึ้นเมื่อใดก็ตามที่มีการเชื่อมต่อ SSH จะเริ่ม ไม่เช่นนั้นโปรไฟล์จะทำงานเหมือนปกติ

โปรดทราบว่านี่จะเป็นการข้ามสคริปต์โปรไฟล์ที่ได้รับผลกระทบเท่านั้น สคริปต์โปรไฟล์อื่น ๆ ทั้งหมด (เช่น:) /etc/profileจะยังคงถูกประมวลผลจนกว่าคุณจะแก้ไขในทำนองเดียวกัน

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