Làm thế nào để tôi có được ssh-agent để làm việc trong tất cả các thiết bị đầu cuối?


27

Tôi đã thiết lập đăng nhập ssh tự động (ít mật khẩu) cho một số máy chủ bằng ssh-copy-id. ssh-agentchỉ hoạt động từ thiết bị đầu cuối nơi nó được chạy. Làm thế nào để tôi có ssh-addthể làm việc trong tất cả các thiết bị đầu cuối của tôi?

Đương nhiên, tôi sẽ không thích khóa SSH nếu không có cụm mật khẩu.

Câu trả lời:


26

Nếu bạn đang đăng nhập vào một phiên đồ họa, hãy sắp xếp để bắt đầu ssh-agenttrong khi khởi động phiên của bạn. Một số bản phân phối đã làm điều đó cho bạn. Nếu không, hãy sắp xếp để chạy ssh-agenttừ tập lệnh khởi động phiên hoặc từ trình quản lý cửa sổ của bạn. Làm thế nào để làm điều đó phụ thuộc vào môi trường máy tính để bàn và trình quản lý cửa sổ của bạn. Ví dụ: nếu bạn khởi động trình quản lý cửa sổ của mình theo cách thủ công, chỉ cần thay thế cuộc gọi đến my_favorite_wmbằng ssh-agent my_favorite_wm.

Không bắt đầu ssh-agenttừ .bashrchoặc .zshrc, vì các tệp này được thực thi bởi mỗi vỏ tương tác mới. Nơi bắt đầu ssh-agentlà trong một tệp khởi động phiên như .profilehoặc .xsession.

Nếu bạn muốn sử dụng cùng một tác nhân SSH trên tất cả các quy trình cho dù bạn đăng nhập từ đâu, bạn có thể làm cho nó luôn sử dụng cùng một tên ổ cắm, thay vì sử dụng một ổ cắm có tên ngẫu nhiên. Ví dụ: bạn có thể đặt cái này trong ~/.profile:

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi

FYI, lý do nó kiểm tra $? -ge 2là vì mã thoát 1 là khi tác nhân ssh không có khóa, nhưng ssh-agent đã chạy.
wvducky

7

Bạn có thể muốn một chương trình như Keychain , được thiết kế cho mục đích chính xác này. Từ trang người đàn ông:

DESCRIPTION
   keychain is a manager for ssh-agent, typically run from ~/.bash_profile.
   It allows your shells and cron jobs to share a single ssh-agent process.

thực sự thích cái này
Colin D

Tuyệt quá! cảm ơn bạn. Hoạt động hoàn hảo.
Ai đó

điều này hoạt động rất tốt, sau khi tải xuống tệp nén từ Github, hãy đảm bảo bạn đã thêm đường dẫn đầy đủ của thư mục móc khóa-nén.5.5 vào thư mục ~ / .bash_profile xuất PATH = $ PATH: line
Kevin Zhao

4

Áp dụng nó cho môi trường máy tính để bàn hoặc trình quản lý cửa sổ của bạn. Khi tôi đã thực hiện việc này một cách thủ công trong quá khứ với một tùy chỉnh ~/.Xclients, tôi chỉ sử dụng điều này như là dòng cuối cùng:

ssh-agent mywindowmanger

Có thể có một số DE có các tùy chọn thiết lập riêng cho việc này, mặc dù với tôi rằng (ví dụ) KDE thì không. Hiện tại, có vẻ như của tôi đã được chạy thông qua mã từ /etc/X11/xinit/xinitrc-common(có lẽ là một cái gì đó được thực hiện bởi fedora), vì nó hoạt động cho tất cả người dùng bất kể DE / WM và lệnh xử lý cha là gì $HOME/.Xclients, nhưng tệp đó không tham chiếu ssh-agent(trong khi /etc/X11/xinit/xinitrc-commonđó).

Nếu bạn không có ~/.Xclients, bạn có thể tạo một dòng chỉ với một dòng đó, nhưng bạn sẽ cần biết lệnh bắt đầu DE / WM của mình.

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.