Lưu danh tính được thêm bởi ssh-add để chúng tồn tại


19

Gần đây tôi đã thiết lập opensshđể tôi có thể sử dụng nó với git.

Trong quá trình thiết lập nó (theo bài viết này ) tôi đã chạy các lệnh:

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>

Một thời gian sau, sau khi tôi đăng xuất và đăng nhập lại, tôi đã cố gắng sử dụng, git pushtôi gặp lỗi. Giải pháp cho lỗi này là chạy lại các lệnh đó.

Xin vui lòng cho tôi biết làm thế nào tôi có thể

  • Tiếp tục ssh-agentchạy để tôi không phải bắt đầu một cái mới
  • Hãy nhớ các khóa tôi đã thêm để tôi không phải thêm chúng mọi lúc

Để làm rõ, tôi sử dụng zsh để các tính năng bash nhất định sẽ không hoạt động trong .zshrc của tôi.


Bạn nên bắt đầu với việc hiểu những gì được sử ssh-agentdụng và làm thế nào nó hoạt động trước khi cố gắng phù hợp với nó trường hợp sử dụng xoắn của bạn.
Jakuje

Bạn có lỗi gì?
Jakuje

@Jakuje Lỗi là về một pubkey bị mất tích và hỏi "Bạn đã bắt đầu ssh-agent chưa?".
timotree

Câu trả lời:


21

ssh-agentdùng để làm gì và nó hoạt động như thế nào?

Việc ssh-agentgiữ các khóa được giải mã của bạn an toàn trong bộ nhớ và trong phiên của bạn. Không có cách hợp lý và an toàn để bảo tồn các khóa được giải mã giữa các lần khởi động lại / đăng nhập lại.

OK, làm thế nào tôi có thể tự động hóa nó?

Tự ssh-agentđộng khởi động

Thêm vào

[ -z "$SSH_AUTH_SOCK" ] && eval "$(ssh-agent -s)"

đến ~/.bashrctập lệnh khởi động của bạn hoặc khác ( ~/.zshrc).

Tự động thêm các phím

Các phím có thể được tự động thêm vào lần sử dụng đầu tiên, khi bạn thêm

AddKeysToAgent yes

để của bạn ~/.ssh/config.

Để biết thêm thông tin về ~/.ssh/configxem man ssh_config.


Vì vậy, bạn đang nói nếu tôi kích hoạt AddKeysToAgent, thì bất cứ khi nào tôi gõ eval "$(ssh-agent -s)"nó sẽ thêm khóa của tôi?
timotree

Nếu đại lý đang chạy và bạn sshhỗ trợ tùy chọn này, thì có.
Jakuje

Bạn có thể vui lòng làm rõ làm thế nào tôi sẽ tự động hóa bắt đầu ssh-agentsau đó?
timotree

Về cơ bản, như được giải thích trong câu trả lời khác. [ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent)
Jakuje

Điều đó có làm việc với zsh?
timotree

3

Thêm cái này vào ~/.bashrc

Điều này có nghĩa là ssh-agent sẽ được khởi động tự động khi bạn mở một phiên khác không có thiết bị đầu cuối của bạn

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
fi

nếu bạn cần một khóa để thêm vào đại lý cũng thêm điều này

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
 ssh-add ~/.ssh/<your private ssh key>
fi

1
Đây là một câu trả lời hay nhưng không giải thích được lệnh này làm gì.
timotree
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.