ssh-agent không được thiết lập (SSH_AUTH_SOCK, SSH_AGENT_PID env vars chưa được đặt)


13

Tôi đã thiết lập một tài khoản người dùng mới cho một người bạn trên Kubfox 12.04. Khi anh ta sử dụng ssh, anh ta nhận được lỗi này:

Không thể mở kết nối đến đại lý xác thực của bạn

Chúng tôi đang chạy sshtrong một số tập lệnh bash.

Sau khi nhìn xung quanh rất nhiều thứ có thể dẫn đến lỗi đó, tôi đã tìm ra giải pháp này:

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/some_id_rsa

Sau đó anh ta có thể chạy các sshlệnh (và bash scripts) như mong đợi.

Trước khi chạy hai lệnh đó, các biến env không được đặt trong terminal:

$ echo $SSH_AGENT_PID

$ echo $SSH_AUTH_SOCK

$ 

Sau khi chạy các lệnh, các biến env được đặt như mong đợi. Tuy nhiên, chúng không được đặt (ví dụ: trong một vỏ khác hoặc sau khi khởi động lại).

Tôi muốn biết cách thiết lập máy tính của anh ấy để anh ấy không phải chạy hai lệnh đó để đặt biến env. Tôi không cần phải chạy chúng trên máy tính của mình (bao giờ). Cho đến nay tôi không thấy có gì khác biệt giữa các máy của chúng tôi.

Tôi thấy thông tin này trong trang hướng dẫn, nhưng nó không cho tôi biết Ubuntu thường tự động thiết lập tác nhân như thế nào hoặc những gì đang xảy ra trên máy của bạn tôi để nó không hoạt động với anh ta.

Có hai cách chính để thiết lập một tác nhân: Cách thứ nhất là tác nhân bắt đầu một tiểu ban mới trong đó một số biến môi trường được xuất, ví dụ: ssh-agent xterm &. Thứ hai là tác nhân in các lệnh shell cần thiết (có thể tạo cú pháp sh (1) hoặc csh (1)) có thể được tìm thấy trong shell gọi, ví dụ: eval ssh-agent -scho các shell kiểu Bourne như sh (1) hoặc ksh (1) và eval ssh-agent -ccho csh (1) và các dẫn xuất.

Sau khi cài đặt acctvà khởi động lại, đây là đầu ra của lastcomm:

ssh-agent         F    newuser __         0.12 secs Wed Aug  7 11:02
ssh-agent         F    newuser __         0.00 secs Wed Aug  7 20:34
ssh-agent         F    newuser __         0.02 secs Wed Aug  7 20:02
ssh-agent         F    newuser __         0.01 secs Thu Aug  8 12:39
ssh-agent         F    newuser __         0.02 secs Thu Aug  8 07:45

Từ trang người đàn ông:

Lệnh F - được thực hiện sau một ngã ba nhưng không có lệnh thực thi sau

Tôi không chắc điều đó có ý nghĩa hay không.


2
Trong Ubuntu, ssh-agentthường được bắt đầu từ /etc/X11/Xsession.d/90x11-common_ssh-agent. Điều này có thể được ngăn chặn bằng cách loại bỏ use-ssh-agenttừ /etc/X11/Xsession. Những tập tin đó có đúng không? Là tác nhân bắt đầu và sau đó bị giết hoặc không bao giờ bắt đầu? (Cài đặt acctvà chạy lastcommsau khi đăng nhập để xem những gì chương trình đã được lauched.)
Gilles 'Somali dừng vốn là xấu'

@ Gilles-cảm ơn bạn. Hai tập tin đó giống hệt nhau trên máy của tôi và máy của anh ấy. Chúng tôi đều có X11/Xsession.options:use-ssh-agentX11/Xsession.d/90x11-common_ssh-agent:SSHAGENT=/usr/bin/ssh-agent. Tôi sẽ cố gắng acctlastcommtiếp theo. Cảm ơn
MountainX-for-Monica

câu hỏi được cập nhật
MountainX-for-Monica

vẫn đang tìm kiếm một giải pháp ...
MountainX-for-Monica

Vui lòng gửi đầu ra lastcommcho một phiên đầy đủ, không chỉ là ssh-agentquá trình. Vấn đề là để xem thứ tự các chương trình khác nhau được bắt đầu.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


0

Bạn đã đề cập đến người dùng của bạn đang sshtham gia, không đăng nhập cục bộ. Vì vậy, phần use-ssh-agenttrong /etc/X11/Xsession.optionslà một cá trích đỏ: nó sẽ không được thực thi trong các phiên SSH, chỉ khi đăng nhập vào máy tính để bàn GUI X11 cục bộ (hoặc sử dụng một số phiên X11 ảo như trên VNC hoặc RDP).

Thay vào đó, bạn nên kiểm tra nếu libpam-sshđược cài đặt trên một trong hai hệ thống. Nó có thể được cấu hình để xác thực người dùng bằng cụm mật khẩu khóa riêng SSH, nhưng đó là tùy chọn và bạn sẽ cần đặt cụ thể khóa ~/.ssh/login-keys.d/cho chức năng đó.

Tuy nhiên, tính năng khác của nó là tự động khởi động tác nhân SSH trên bất kỳ phiên đăng nhập nào và tự động thêm khóa riêng SSH vào tác nhân nếu mật khẩu của chúng giống với mật khẩu đăng nhập của người dùng. Tôi nghĩ rằng đây có thể là nguyên nhân của hành vi khác nhau giữa các hệ thống của bạn.


3

Cho

$ eval `ssh-agent -s`

xây dựng để hoạt động khi được đặt trong tập lệnh khởi động của hệ thống, một phiên của bạn, và cuối cùng là thiết bị đầu cuối nơi bạn mong đợi môi trường, phải là hậu duệ (bởi forkexec) của tập lệnh đó. Lý do là đầu ra của ssh-agent -s, khi được đánh giá, đặt các biến môi trường trong lệnh gọi shelleval . Hình thức ở đó, họ có thể được lưu truyền, và họ cũng có thể bị mất trên đường đi.

Vì vậy, nếu ssh-agentđược chạy bởi tập lệnh A ở đâu đó trong khi đăng nhập, nhưng thiết bị đầu cuối B mà bạn khởi động, tập lệnh shell của bạn không phải là hậu duệ của A, thì bạn không thể thấy môi trường trong B.

Nếu bạn tình cờ ssh-agentbắt đầu làm systemd --userdịch vụ, thì bạn có thể phải sử dụng quy ước thay thế: Đừng để ssh-agent chỉ định các biến, nhưng sử dụng kiến ​​thức phổ biến khi bắt đầu đại lý và khi bắt đầu phiên. Ví dụ, ~/.config/systemd/user/ssh-agent.servicengoại hình của tôi như thế này:

[Unit]
Description=SSH agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target

Và trong tôi ~/.profilecó dòng

export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"

Lưu ý rằng %ttrong cái trước tương ứng với ${XDG_RUNTIME_DIR}cái sau.

Lưu ý: Tôi không hài lòng về điều này!


1

Tôi tìm thấy câu trả lời ở đây:

http://www.bernatchez.net/userauth.html

Trên Ubuntu, tiện ích ssh-add không tải được tệp chứng chỉ. Nó xảy ra khi tác nhân được thực hiện bởi gnome-keyring. Cách khắc phục là ngừng sử dụng thành phần ssh của gnome-keyring. Vì quá trình khởi tạo thực sự khởi động một tác nhân ssh thực sự và sau đó khởi chạy gnome-keyring-ssh.desktop để chặn AUTH_SOCKET để xử lý nó, chúng ta có thể quay trở lại tác nhân ssh ban đầu bằng cách vô hiệu hóa gnome-keyring-ssh.desktop.

Vô hiệu hóa gnome-keyring-ssh.desktop:

cd /etc/xdg/autostart/
sudo emacs gnome-keyring-ssh.desktop

Thêm dòng sau vào tệp máy tính để bàn và lưu nó, sau đó khởi động lại:

X-GNOME-Autostart-enabled=false

0

Bạn đã đề cập rằng

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/some_id_rsa

hoạt động như mong muốn. Vì vậy, bạn chỉ cần những thứ đó để thực thi đúng lúc, trong .bash_profile hoặc .xsession. Thêm các câu lệnh gỡ lỗi như (date; env|sort) >> /tmp/logđể giúp bạn hiểu chính xác khi chúng chạy.

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.