ฉันจะเข้าถึงพวงกุญแจจากระยะไกลได้จากบรรทัดคำสั่งได้อย่างไร


23

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

security unlock-keychain ~/Library/Keychains/login.keychain
<enter password>
security find-internet-password -s smtp.gmail.com -a foo@gmail.com
<dumps keychain attributes, not including password>
security find-internet-password -s smtp.gmail.com -a foo@gmail.com -g
<dumps keychain attributes, including password>

อย่างไรก็ตามผลลัพธ์ไม่สามารถทำได้เมื่อเรียกใช้จากระยะไกล (ไปที่กล่องจากที่อื่น):

security unlock-keychain ~/Library/Keychains/login.keychain
<enter password>
security find-internet-password -s smtp.gmail.com -a foo@gmail.com
<dumps keychain attributes, not including password>
security find-internet-password -s smtp.gmail.com -a foo@gmail.com -g
<nothing printed, to stdout or stderr>

ยิ่งกว่านั้นค่าส่งคืนของคำสั่งสุดท้าย (using -g) คือ 36

ฉันทิ้งผลลัพธ์ของsetจากการเข้าสู่ระบบท้องถิ่นและเปรียบเทียบกับระยะไกลและตัวแปรสภาพแวดล้อมที่ขาดหายไปคือ:

Apple_PubSub_Socket_Render
GPG_AGENT_INFO
SECURITYSESSIONID
TERM_PROGRAM
TERM_PROGRAM_VERSION
TERM_SESSION_ID
XPC_FLAGS
XPC_SERVICE_NAME

ฉันพลาดอะไรไป ฉันได้SSH_AUTH_SOCKตั้งค่าที่ถูกต้อง (ส่งคืนจากssh-agent)


เกี่ยวข้อง: Keychain Access From Shell
kenorb

คำตอบ:


11

ในการทำซ้ำสิ่งนี้เพื่อตรวจสอบฉันสังเกตเห็นว่าฉันได้กำหนดค่าพวงกุญแจของฉันเป็น "ยืนยันก่อนที่จะอนุญาตให้เข้าถึง" ดังนั้นเมื่อฉันดำเนินการfind-internet-passwordภายในด้วย-gธงฉันได้รับกล่องโต้ตอบระบุความปลอดภัยต้องการใช้ข้อมูลลับของคุณเก็บไว้ใน "smtp gmail.com” ในพวงกุญแจของคุณ ถ้าฉันคลิก“อนุญาต” แล้วมันทำงานถ้าผมคลิก“ปฏิเสธ” มันล้มเหลวคล้าย ๆ กับกรณีที่มีรหัสการกลับมาของ ssh51ช่องโต้ตอบการยืนยันการเข้าถึง

เมื่อฉันพยายามคำสั่งระยะไกลผ่านทางsshที่-gจะส่งผลทันทีในความล้มเหลวกับสถานะของการ36ที่คุณมีการรายงาน

ฉันสงสัยว่านี่เป็นเพราะเมื่อคุณsshเข้าไปไม่มีวิธีใดที่ระบบจะเปิดกล่องโต้ตอบขึ้นมาเพื่อให้คุณยืนยันว่าคุณต้องการอนุญาตให้securityคำสั่งเข้าถึงข้อมูลนี้

ฉันสามารถรับคำสั่งให้ทำงานได้ในขณะที่เชื่อมต่อโดยsshคลิกตัวเลือก“ อนุญาตเสมอ” เมื่อเรียกใช้คำสั่งในเครื่อง การอัปเดตการอนุญาตใน Keychain จะทำให้ฉันไม่จำเป็นต้องตอบกลับข้อความโต้ตอบ (แม้แต่ในเครื่อง) อีกต่อไปซึ่งอนุญาตให้ทำงานจากระยะไกลได้เช่นกัน

ฉันไม่รู้ว่าสิ่งนี้จะเป็นประโยชน์กับคุณอย่างไรฉันคิดว่าคุณจำเป็นต้องให้สิทธิ์การsecurityเข้าถึงโปรแกรมสำหรับรายการพวงกุญแจใด ๆ ที่คุณอาจต้องการเข้าถึงจากระยะไกล เป็นไปได้ไหมที่จะเขียนสคริปต์เพื่อทำสิ่งนี้?

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


ฉันได้ทำสิ่งเดียวกัน - เพิ่มคำสั่ง 'ความปลอดภัย' ลงในรายการ "อนุญาตให้เข้าถึงได้เสมอ" (ซึ่งทำได้ด้วยการคลิก "อนุญาตเสมอ" ในป๊อปอัปที่ปรากฏขึ้นเมื่อออกคำสั่งภายในเครื่อง) แต่ฉันยังไม่สามารถ เข้าถึงรายการพวงกุญแจจากระยะไกลหลังจากนั้น ต้องมีการตั้งค่าอื่นที่ต้องแก้ไข แต่ฉันไม่สามารถหาได้
อีเธอ

1
ahahaha - นี้ไม่จริงการทำงาน แต่อย่างใดอย่างหนึ่งความต้องการที่จะเข้าสู่ระบบด้วยเซสชั่นใหม่หลังการเปลี่ยนแปลงการตั้งค่าในพวงกุญแจสำหรับพวกเขาที่จะมีผลบังคับใช้ ไชโย! (ฉันจะเพิ่มคำตอบสำหรับคำถามนี้หากฉันเคยค้นหาวิธีการแก้ไขสิทธิ์การเข้าถึงจากระยะไกล แต่การตั้งค่าสิ่งต่าง ๆ ในเครื่องล่วงหน้าสำหรับการใช้ระยะไกลที่ตามมาเป็นสิ่งที่ยอมรับได้ในตอนนี้)
Ether

2
โปรดทราบ - สิ่งสำคัญคือต้องทำงานsecurity unlock-keychain ~/Library/Keychains/login.keychainในเซสชันระยะไกลซึ่งคุณกำลังพยายามใช้พวงกุญแจ สิ่งนี้จะถามรหัสผ่านของคุณดังนั้นคุณจึงไม่สามารถทำได้ในสคริปต์ อาจจะมีวิธีการที่จะบรรลุเป้าหมายนี้ได้โดยไม่ต้องใส่รหัสผ่าน แต่ที่ออกจากขอบเขตของคำถามนี้ :)
อีเธอร์

ไม่มีใครรู้ว่าฉันสามารถป้อนรหัสผ่านในบรรทัดคำสั่งสำหรับการปลดล็อคความปลอดภัยพวงกุญแจ?
tofutim

1
@Ether หากพวงกุญแจอยู่ใน/Users/[user]/Library/Keychains/เส้นทางเริ่มต้นคุณสามารถละเว้นเส้นทางแบบเต็มและไปด้วยlogin.keychainได้
solgar

5

security -i unlock-keychain

ใช้ได้กับฉันใน MacOS 10.13.4 High Sierra

หลังจากตรวจสอบวิธีการแก้ของ karthick ฉันพบสิ่งนี้ -i สร้างคำสั่งแบบโต้ตอบและพร้อมต์ให้คุณป้อนรหัสผ่านของเทอร์มินัล


3

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

security unlock-keychain -p "enter password"


ยินดีต้อนรับสู่ถามที่แตกต่างกัน! เรากำลังพยายามค้นหาคำตอบที่ดีที่สุดและคำตอบเหล่านั้นจะให้ข้อมูลสนับสนุนว่าทำไมถึงดีที่สุด คำตอบควรอยู่ในตัวเองดังนั้นให้อธิบายว่าทำไมคุณคิดว่าคำตอบที่คุณให้ไว้จะช่วยแก้ปัญหาหรือดีกว่าคำตอบอื่น ๆ การให้ลิงก์เป็นข้อมูลสนับสนุนสามารถช่วย OP และอื่น ๆ ค้นหาข้อมูลเพิ่มเติมได้ด้วยตนเอง ดูวิธีการตอบเกี่ยวกับวิธีการให้คำตอบที่มีคุณภาพ - จากการรีวิว
fsb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.