Làm thế nào tôi có thể truy cập móc khóa từ xa từ dòng lệnh?


23

Tôi đang lưu trữ các mật khẩu khác nhau (ví dụ cho các máy chủ email từ xa) trong móc khóa của tôi. Từ dòng lệnh, khi đăng nhập cục bộ, tôi có thể truy xuất chúng qua:

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>

Tuy nhiên, kết quả không thể đạt được khi chạy từ xa (ssh'ing vào hộp từ nơi khác):

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>

Hơn nữa, giá trị trả về của lệnh cuối cùng (sử dụng -g) là 36.

Tôi đã kết xuất đầu ra settừ một thông tin đăng nhập cục bộ và so sánh nó với một điều khiển từ xa và các biến môi trường bị thiếu là:

Apple_PubSub_Socket_Render
GPG_AGENT_INFO
SECURITYSESSIONID
TERM_PROGRAM
TERM_PROGRAM_VERSION
TERM_SESSION_ID
XPC_FLAGS
XPC_SERVICE_NAME

Tôi đang thiếu gì? Tôi đã SSH_AUTH_SOCKđặt thành một giá trị hợp lệ (được trả về từ ssh-agent).


Câu trả lời:


10

Khi sao chép điều này để điều tra, tôi nhận thấy rằng tôi đã cấu hình móc khóa của mình thành xác nhận trước khi cho phép truy cập. Vì vậy, khi tôi thực hiện find-internet-passwordcục bộ với -gcờ, tôi nhận được một hộp thoại cho biết bảo mật muốn sử dụng thông tin bí mật của bạn được lưu trữ trong cách smtp. gmail trong móc khóa của bạn. Nếu tôi nhấp vào Cho phép, thì nó hoạt động, nếu tôi nhấp vào Từ chối, thì nó cũng tương tự như sshtrường hợp, với mã trả về là 51. Hộp thoại xác nhận truy cập

Khi tôi thử lệnh từ xa thông qua ssh, -gngay lập tức sẽ xảy ra lỗi, với trạng thái 36mà bạn đang báo cáo.

Tôi nghi ngờ rằng điều này là do, khi bạn sshvào, không có cách nào để hệ thống bật lên hộp thoại cho phép bạn xác nhận rằng bạn muốn cho phép securitylệnh truy cập thông tin này.

Tôi đã có thể làm cho lệnh hoạt động trong khi được kết nối bằng sshcách nhấp vào đầu tiên tùy chọn Luôn luôn cho phép trực tiếp khi chạy lệnh cục bộ. Điều này cập nhật các quyền trong Keychain để tôi không còn cần phải trả lời hộp thoại (thậm chí cục bộ), cho phép nó cũng hoạt động từ xa.

Tuy nhiên, tôi không biết điều này sẽ hoàn toàn hữu ích với bạn hay không, vì tôi nghĩ nó có nghĩa là bạn sẽ cần phải cấp securityquyền truy cập chương trình cho bất kỳ mục móc khóa nào bạn có thể muốn truy cập từ xa. Có thể viết một kịch bản để làm điều này?

Nếu bạn đang thử nghiệm điều này bằng tay và sau đó muốn thu hồi quyền truy cập này, bạn có thể truy cập mục bị ảnh hưởng trong Truy cập Keychain, chọn Nhận thông tin và xem tab Điều khiển truy cập . Bạn sẽ thấy một mục cho securityđó, mà bạn có thể xóa:Hộp thoại kiểm soát truy cập


Tôi đã làm điều tương tự - đã thêm lệnh 'bảo mật' vào danh sách "luôn cho phép truy cập" (cũng được thực hiện bằng cách nhấp vào "Luôn cho phép" trên cửa sổ bật lên xuất hiện khi ban hành lệnh cục bộ), nhưng tôi vẫn không thể truy cập các mục móc khóa từ xa sau đó. Phải có một thiết lập khác ở đâu đó cần được thay đổi, nhưng tôi không thể tìm thấy nó.
Ether

1
ahahaha - điều này không thực sự làm việc, nhưng người ta cần phải đăng nhập bằng một phiên làm việc mới sau khi thay đổi các thiết lập trong Keychain cho họ để có hiệu lực. Hoan hô! (Tôi sẽ thêm câu trả lời cho câu hỏi này nếu tôi tìm ra cách thay đổi từ xa các đặc quyền truy cập, nhưng thiết lập mọi thứ trước cục bộ để sử dụng từ xa tiếp theo có thể chấp nhận được ngay bây giờ.)
Ether

2
Cũng lưu ý - điều cần thiết là cũng phải chạy security unlock-keychain ~/Library/Keychains/login.keychaintrong phiên từ xa nơi bạn đang cố gắng sử dụng móc khóa. Điều này sẽ nhắc mật khẩu của bạn, vì vậy bạn không thể thực hiện nó trong một tập lệnh. Có thể có cách để đạt được điều này mà không cần mật khẩu, nhưng đó là ngoài phạm vi của câu hỏi này :)
Ether

Có ai biết nếu tôi có thể nhập mật khẩu trong dòng lệnh để mở khóa bảo mật không?
tofutim

1
@Ether Nếu móc khóa nằm trong /Users/[user]/Library/Keychains/đường dẫn mặc định, bạn có thể bỏ qua đường dẫn đầy đủ và chỉ đi với login.keychain.
solgar

4

security -i unlock-keychain

hoạt động với tôi trong MacOS 10.13.4 High Sierra.

Sau khi điều tra giải pháp của karthick, tôi tìm thấy điều này. -I làm cho lệnh tương tác và nhắc bạn trong thiết bị đầu cuối cho mật khẩu của bạn.


2

Miễn là móc khóa bảo mật ở vị trí mặc định, bạn có thể chạy lệnh bên dưới để mở khóa. Nó không nhắc nhập mật khẩu. Nó làm việc từ xa.

security unlock-keychain -p "enter password"


Chào mừng bạn đến hỏi khác nhau! Chúng tôi đang cố gắng tìm câu trả lời tốt nhất và những câu trả lời đó sẽ cung cấp thông tin hỗ trợ về lý do tại sao chúng là tốt nhất. Câu trả lời nên được khép kín để giải thích lý do tại sao bạn nghĩ rằng câu trả lời bạn cung cấp sẽ giải quyết vấn đề hoặc tốt hơn những câu hỏi khác. Cung cấp các liên kết dưới dạng thông tin hỗ trợ cũng có thể giúp OP và những người khác tìm thấy thông tin bổ sung cho chính họ. Xem Cách trả lời về cách cung cấp câu trả lời chất lượng. - Từ đánh giá
fsb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.