ถ้าฉันใช้สิ่งนี้:
ssh user@server 'mysql -u user -p'
เมื่อถามรหัสผ่าน MySQL และเริ่มพิมพ์รหัสผ่านจะปรากฏบนหน้าจอ ฉันจะป้องกันสิ่งนี้ได้อย่างไร ถ้าฉันเข้าสู่ระบบssh
และดำเนินการคำสั่ง MySQL ทุกอย่างทำงานได้ดี
ถ้าฉันใช้สิ่งนี้:
ssh user@server 'mysql -u user -p'
เมื่อถามรหัสผ่าน MySQL และเริ่มพิมพ์รหัสผ่านจะปรากฏบนหน้าจอ ฉันจะป้องกันสิ่งนี้ได้อย่างไร ถ้าฉันเข้าสู่ระบบssh
และดำเนินการคำสั่ง MySQL ทุกอย่างทำงานได้ดี
คำตอบ:
หากคุณให้คำสั่งรีโมตเพื่อรัน SSH จะไม่จัดสรร tty ดังนั้นคำสั่งรีโมตจะไม่สามารถปิดใช้งาน echo คุณสามารถบังคับ SSH เพื่อให้ tty โดยใช้-t
ตัวเลือก:
ssh -t user@server 'mysql -u user -p'
ตัวเลือกที่เทียบเท่า (สำหรับ-o
หรือไฟล์ config) RequestTTY
เป็น ฉันต้องการความระมัดระวังกับการใช้ในการกำหนดค่าเพราะมันสามารถมีผลกระทบที่ไม่พึงประสงค์สำหรับคำสั่งที่ไม่ใช่แบบโต้ตอบ
RequestTTY
man 5 ssh_config
หากคุณเชื่อถือได้[*]ความปลอดภัยของคอมพิวเตอร์ระยะไกลคุณสามารถจัดเก็บรหัสผ่านไว้ในไฟล์ตัวเลือกที่ได้รับการป้องกันอย่างเหมาะสมตามที่แนะนำในบทผู้ใช้ปลายทางสำหรับบทความปลอดภัยของรหัสผ่านของคู่มือโดยไม่จำเป็นต้องสื่อสารผ่านssh
หรือพิมพ์ เวลา.
คุณสามารถเพิ่มบรรทัดในส่วน [ลูกค้า] ของไฟล์.my.cnf
ในโฮมไดเร็กตอรี่ของคุณ:
[client]
password=your_pass
แน่นอนว่าคุณจะต้องป้องกันไม่ให้ทุกคนยกเว้นตัวคุณเองสามารถเข้าถึงไฟล์นั้นได้โดยตั้งค่าโหมดการเข้าถึงไฟล์เป็น 400 หรือ 600 ด้วยเช่น
chmod 600 ~/.my.cnf
จากนั้นคุณสามารถใช้สิ่งที่ชอบ
ssh user@server 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'
ที่user110971
เป็นชื่อผู้ใช้บัญชีของคุณ
ssh -t
)ปัญหานี้เกิดขึ้นทุกครั้งที่คุณส่งคำสั่งผ่านssh
และคุณจำเป็นต้องใส่อินพุตเพราะโดยค่าเริ่มต้นssh
จะไม่จัดสรรหลอก - tty
คุณสามารถบังคับให้จัดสรร tty ด้วยตัวเลือก-t
(มากกว่าหนึ่งถ้าจำเป็น):
-t
บังคับการจัดสรรแบบหลอก สิ่งนี้สามารถใช้เพื่อรันโปรแกรมบนหน้าจอโดยพลการบนเครื่องระยะไกลซึ่งมีประโยชน์มากเช่นเมื่อใช้งานบริการเมนู ตัวเลือกหลาย
-t
ตัวบังคับให้มีการจัดสรร tty แม้ว่า ssh จะไม่มี tty ในเครื่อง
ดังที่คุณสามารถอ่านได้ในโพสต์ Debian (Jul_11_2008)เกี่ยวกับsudo
มันเป็นปัญหาเก่าที่รักที่จะเกิดขึ้นอีก:
ssh user@server "sudo ls" password: password
และรหัสผ่านจะแสดงให้คุณ
ทางออกคือการบังคับให้ ssh จัดสรร pseudo-tty ด้วยแฟล็ก -t:
ssh -t user@server sudo ls
[*]หากคุณสามารถไว้วางใจให้ใส่รหัสผ่านในไฟล์ที่สามารถเข้าถึงได้โดยคุณเท่านั้นและรูทไคลเอ็นต์ที่ทำงานอยู่
หากเป็นไปได้ที่จะรีบูตเครื่องคอมพิวเตอร์ระยะไกลที่เปลี่ยนระบบปฏิบัติการหรือถอด HDD คอมพิวเตอร์จะไม่ถือว่าปลอดภัยอย่างสมบูรณ์ ... แต่ในกรณีนี้ฐานข้อมูลจะไม่ปลอดภัย
ตัวเลือกเมานต์ "hidepid" สำหรับ proc fs ก็มีค่าเช่นกัน มันทำให้บรรทัดคำสั่งของคุณมองไม่เห็นในรายการกระบวนการสำหรับผู้ใช้รายอื่น ตัวอย่าง fstab:
proc /proc proc hidepid=1 0 0