2008-09-19 30 views
6

Tôi sử dụng ssh-agent với các khóa được bảo vệ bằng mật khẩu trên Linux. Mỗi lần tôi đăng nhập vào một máy nhất định, tôi thực hiện việc này:ssh-agent với mật khẩu mà không sinh ra quá nhiều quá trình

eval `ssh-agent` && ssh-add 

Điều này hoạt động đủ tốt, nhưng mỗi khi tôi đăng nhập và thực hiện việc này, tôi tạo một tác nhân ssh khác. Thỉnh thoảng, tôi sẽ làm killall ssh-agent để gặt hái chúng. Có cách nào đơn giản để tái sử dụng cùng một quá trình ssh-agent trên các phiên khác nhau không?

+0

Xem thêm câu trả lời tuyệt vời này: http://unix.stackexchange.com/a/90869/92102 –

Trả lời

5

có một cái nhìn tại Keychain. Nó được viết b người trong một tình huống tương tự cho chính mình. Keychain

3

Bạn có bao nhiêu kiểm soát đối với máy này? Một câu trả lời là chạy ssh-agent như một quá trình daemon. Các tùy chọn khác được giải thích trên this web page, về cơ bản thử nghiệm để xem liệu tác nhân có ở đó không và sau đó chạy nó nếu không.

Để sao chép một trong những ý tưởng ở đây:

SSH_ENV="$HOME/.ssh/environment" 

function start_agent { 
    echo "Initialising new SSH agent..." 
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" 
    echo succeeded 
    chmod 600 "${SSH_ENV}" 
    . "${SSH_ENV}" > /dev/null 
    /usr/bin/ssh-add; 
} 

# Source SSH settings, if applicable 

if [ -f "${SSH_ENV}" ]; then 
    . "${SSH_ENV}" > /dev/null 
    #ps ${SSH_AGENT_PID} doesn’t work under cywgin 
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { 
     start_agent; 
    } 
else 
    start_agent; 
fi 
0

Tùy thuộc vào vỏ bạn sử dụng, bạn có thể đặt các cấu hình khác nhau cho vỏ đăng nhập và các shell mới thông thường. Nói chung bạn muốn bắt đầu ssh-agent cho shell đăng nhập, nhưng không phải cho mọi subshell. Ví dụ, các tệp này sẽ là .bashrc.bash_login.

Hầu hết các linux trên máy tính để bàn những ngày này chạy ssh-agent cho bạn. Bạn chỉ cần thêm chìa khóa của bạn với ssh-thêm, và sau đó chuyển tiếp các phím trên các phiên ssh từ xa bằng cách chạy

 
ssh -A 
1

Bạn có thể làm:

ssh-agent $SHELL 

Điều này sẽ gây ssh-agent để thoát khi vỏ thoát. Chúng vẫn không được chia sẻ qua các phiên, nhưng ít nhất chúng sẽ biến mất khi bạn làm.

Các vấn đề liên quan