sử dụng gnome-keyring-daemon mà không có X


25

Tôi tự hỏi liệu có thể sử dụng gnome-keyring-daemon mà không cần X. Thông thường, nó sẽ đưa ra lời nhắc đồ họa để lấy mật khẩu cho khóa; Có cách nào để giái quyết vấn đề này không? Tôi muốn có thể sử dụng Ubuntu một mà không phải bắt đầu một phiên đồ họa và nhập mật khẩu của tôi.

Câu trả lời:


11

Bạn có thể sử dụng pam_gnome_keyring.sođể bắt đầu và mở khóa daemon. GDM đã làm điều này; cho login, bạn phải cấu hình nó bằng tay.

Thêm các dòng này vào /etc/pam.d/login:

auth tùy chọn pam_gnome_keyring.so
phiên tùy chọn pam_gnome_keyring.so auto_start

Nếu bạn đăng nhập mà không có mật khẩu (SSH bằng Kerberos hoặc khóa chung), điều này có thể hoạt động: (Tôi chưa kiểm tra nó)

echo -n "mật khẩu" | gnome-keyring-daemon --login

(Bạn vẫn cần daemon để chạy - bắt đầu qua PAM hoặc với --daemonize.)


Trường hợp thứ hai là trường hợp trong trường hợp của tôi. --loginTùy chọn đó (không có tài liệu?) Là khá hữu ích, mặc dù tôi chắc chắn sẽ không muốn giữ mật khẩu chưa được xóa của mình trong một tập lệnh hoặc đặt nó trên một dòng lệnh. đọc trong chế độ chưa được xử lý từ trong một tập lệnh (không phải ngôn ngữ hệ vỏ) mà sau đó chuyển đầu vào đó vào trình nền được sinh ra có lẽ là một cách tốt để làm điều này. Tôi chỉ nên bắt đầu quá trình này một lần mỗi lần khởi động, vì vậy sẽ rất hợp lý khi nhập mật khẩu; Tôi chỉ cần có thể làm điều đó tại dòng lệnh thay vì thông qua hộp thoại GTK.
trực giác

1
err .. nevermind, nó được ghi nhận bởi gnome-keyring-daemon --help. Tôi chỉ kiểm tra manpage và / usr / share / doc.
trực giác

2
@intuited: Vâng, sau đó làm một cái gì đó như thế này: read -rsp "Password: " pass; echo -n "$pass" | gnome-keyring-daemon --logintrong một kịch bản.
grawity

Trên thực tế, điều đó sẽ làm việc; Tôi đã quên rằng tiếng vang là một nội dung.
trực giác

Trả lời nhận xét cũ từ @intuited: gnome-keyring-daemon --helpcung cấp cho tôi một cái nhìn tổng quan tốt, nhưng man gnome-keyring-daemonchỉ chứa một mô tả ngắn về chính chương trình nhưng không có đối số.
feeela

10

Tóm tắc

Các công việc cần thiết khi cài đặt svn với hỗ trợ khóa và cài đặt ứng dụng Collabnet keyring_tool đã được thực hiện cho các máy chủ Linux của chúng tôi.

1) Định cấu hình máy khách SVN để sử dụng khóa:

1.1) Chỉnh sửa ~ / .subversion / config

[auth]
password-stores = gnome-keyring

1.2) Chỉnh sửa ~ / .subversion / máy chủ

[global]
store-passwords = yes
store-plaintext-passwords = no

2) Tạo khóa cho mật khẩu của bạn. Bạn sẽ được nhắc tạo một mật khẩu mới để mở khóa khóa; đây có thể là bất cứ điều gì bạn muốn:

keyring_tool --create=svn

3) Đặt khóa mới làm mặc định:

keyring_tool --setdef=svn

4) Trong .bash_profile hoặc .bash_login (giả sử bạn đang sử dụng bash làm thiết bị đầu cuối của mình)

    if [ -e /usr/bin/gnome-keyring-daemon ]; then
      if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
        # Create dbus transport link for SVN to talk to the keyring.
        eval `dbus-launch --sh-syntax`

        # Start the keyring daemon.
        # The use of export here captures the GNOME_KEYRING_PID, GNOME_KEYRING_SOCK
        # env values echoed out at startup.
        export `/usr/bin/gnome-keyring-daemon`
      fi
    fi

5) Trong .bash_logout

    # Kill the message bus established for SVN / Keyring communication
    if [ ! -z "`kill -0 $DBUS_SESSION_BUS_PID 2>&1`" ]; then
      kill $DBUS_SESSION_BUS_PID > /dev/null 2>&1
    fi

    # Kill the Gnome Keyring Daemon prior to logout.
    if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
      kill $GNOME_KEYRING_PID > /dev/null 2>&1
    fi

Lý lịch

Tôi gặp phải một vấn đề tương tự trong khi cố gắng thiết lập một cách miễn phí rắc rối để đảm bảo quyền truy cập của người dùng được ủy quyền vào một số repos SVN nhất định tại nơi làm việc. Về cơ bản, chúng tôi đã buộc phải kiểm tra thông tin xác thực mỗi khi người dùng truy cập vào máy chủ để ngay cả lệnh cập nhật svn cũng yêu cầu xác thực. Lưu trữ mật khẩu văn bản rõ ràng đã bị loại bỏ vì vậy với một nghiên cứu nhỏ tôi đã sử dụng khóa gnome như một cách để quấy rối cơ sở người dùng của chúng tôi với các yêu cầu xác thực liên tục trong khi vẫn không cho phép người dùng trái phép khỏi kho lưu trữ mà họ không có quyền truy cập để xem.

Phần lớn công việc hàng ngày của chúng tôi được thực hiện thông qua các đường hầm ssh vào máy chủ RedHat với sự hỗ trợ X vì vậy tôi phải tìm cách hỗ trợ X11. Sau một số tìm kiếm, tôi quản lý để tìm cách xung quanh nó ở đây:

Nguồn nguyên liệu

http://support.wandisco.com/index.php?/Knowledolease -session

Khóa của họ ở đây là sử dụng keyring_tool Collabnet để tạo khóa mà không cần máy khách gnome-keyring-manager và tự thiết lập dbus-launch thay vì để SVN xử lý cài đặt. SVN sử dụng DBUS để kết nối với gnome-keyring-daemon và ảnh hưởng đến xác thực tổng thể. Bằng cách bắt đầu và phá bỏ phiên dbus theo cách thủ công với cú pháp -sh, bạn tránh cố gắng kết nối với máy khách X khi khởi động dbus. Nếu bạn chỉ khởi động gnome-keyring-daemon và cố gắng sử dụng SVN, nó vẫn sẽ nhắc bạn nhập mật khẩu khóa nhưng sau đó cũng sẽ nhắc bạn về thông tin đăng nhập SVN của bạn. Dbus sẽ thất bại khi SVN cố gắng khởi động nó vì thiếu máy khách X; rõ ràng SVN không sử dụng bất kỳ cờ đặc biệt nào khi khởi động dbus.


Cảm ơn bạn rất nhiều vì điều này, đã kéo tóc tôi ra để cố gắng thoát khỏi lỗi "TIÊU CHUẨN **: Lỗi giao tiếp với gnome-keyring-daemon" trên git pull. Các thay đổi của bạn thành ~ / .profile và ~ / .bash_logout đã sửa rằng ... Vẫn không lưu mật khẩu nhưng tôi tiến gần hơn một bước! (Ubuntu 16.04.1 LTS)
Chris B

1

Đầu tiên, những gì bạn thực sự muốn làm là chạy Ubuntu One hoàn toàn từ dòng lệnh. Hãy xem qua Câu hỏi thường gặp về Ubuntu One . Câu hỏi thường gặp nói rằng hiện tại không thể, nhưng có một số công cụ CLI như u1sdtoolu1sync . Ngoài ra còn có một bộ Câu hỏi thường gặp về Ubuntu One tại Launchpad; nội dung có thể giống với liên kết wiki.ubfox.com trước đó.

Liên quan đến câu hỏi thực tế của bạn về gnome-keyring-daemon , FAQ cho thấy (1) cài đặt tự động đăng nhập và (2) đồng bộ hóa mật khẩu khóa với mật khẩu đăng nhập của bạn. Điều này (về lý thuyết) sẽ tránh được lời nhắc mật khẩu, nhưng nó sẽ yêu cầu ít nhất một phiên X cơ bản để chạy.

Có một lỗi / danh sách mong muốn của Ubuntu One trên Launchpad yêu cầu giúp xử lý các hệ thống không đầu dễ dàng hơn. Rõ ràng việc xây dựng từ nguồn được khuyến nghị cho một cài đặt nhẹ (để tránh sự cần thiết cho tất cả các thư viện GUI và như vậy). Nhận xét này là cũ, nhưng đặc biệt thú vị:

Vấn đề là chúng tôi sử dụng python-gnomekeyring. Để chúng tôi hỗ trợ không đầu, chúng tôi sẽ phải chuyển sang sử dụng khóa python và xử lý việc lưu trữ mã thông báo ở một nơi khác ngoài khóa gnome trên màn hình không đầu. Tuy nhiên, điều này sẽ không xảy ra đối với bao bì Karmic vì nó bị đóng băng và thay đổi này sẽ không được chấp nhận trong SRU.

Đối với Lucid, chúng tôi nên có một dịch vụ xác thực mạnh mẽ hơn, cho phép chúng tôi hỗ trợ màn hình không đầu tốt hơn.

Tôi không thể biết liệu "dịch vụ xác thực mạnh mẽ hơn" này có thực sự được áp dụng cho Lucid hay không; dựa trên các phụ thuộc gói, có vẻ như máy khách Ubuntu One vẫn phụ thuộc vào python-gnomekeyring.


0

Tôi đã có một số thành công với việc làm cho mysql-workbench hoạt động với gnome-keyring trong một phiên SSH chuyển tiếp x. Đây là một tài khoản sử dụng xác thực khóa công khai (không có mật khẩu).

Tôi đã sử dụng dbus-run-session để đạt được điều này một khi được kết nối với phiên ssh:

dbus-run-session bash -c 'GNOME_KEYRING_CONTROL=1 mysql-workbench --verbose'

Hy vọng thông tin này hữu ích cho ai đó!


Điều này đã giúp một bước gần hơn để có mysql-workbench chạy bên trong một container docker và xuất màn hình sang máy chủ mac của tôi. Khi tôi cố gắng thêm mật khẩu vào một kết nối mới, nó sẽ hiển thị cho tôi lời nhắc, nhưng sau khi nhập pwd, tôi nhận được: "Không thể thực thi chương trình org.freedesktop.secrets: Thao tác không được phép". Bất kì manh mối nào?
Ricardo Pesciotta
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.