Tôi đã tạo các khóa theo hướng dẫn trong hướng dẫn github, đăng ký chúng với github và thử sử dụng ssh-agent một cách rõ ràng - nhưng git vẫn tiếp tục hỏi tôi mật khẩu của tôi mỗi khi tôi cố gắng kéo hoặc đẩy.
Nguyên nhân có thể là gì?
Tôi đã tạo các khóa theo hướng dẫn trong hướng dẫn github, đăng ký chúng với github và thử sử dụng ssh-agent một cách rõ ràng - nhưng git vẫn tiếp tục hỏi tôi mật khẩu của tôi mỗi khi tôi cố gắng kéo hoặc đẩy.
Nguyên nhân có thể là gì?
Câu trả lời:
Khi bạn đã bắt đầu tác nhân SSH với:
eval $(ssh-agent)
Bạn phải thêm khóa riêng của mình vào đó:
ssh-add
Điều này sẽ hỏi bạn cụm mật khẩu của bạn chỉ một lần, và sau đó bạn sẽ được phép đẩy, miễn là bạn đã tải khóa công khai lên Github.
Để lưu khóa vĩnh viễn trên macOS:
ssh-add -K
Điều này sẽ duy trì nó sau khi bạn đóng và mở lại bằng cách lưu trữ nó trong móc khóa của người dùng.
git pull
, nhắc tôi nhập lại mật khẩu.
ssh-add -K
sẽ duy trì nó sau khi bạn đóng và mở lại bằng cách lưu trữ nó trong móc khóa của người dùng.
ssh-add -K
đưa ra những điều sau:unknown option -- K usage: ssh-add [options] [file ...] Options: -l List fingerprints of all identities. -L List public key parameters of all identities. -k Load only keys and not certificates. -c Require confirmation to sign using identities -t life Set lifetime (in seconds) when adding identities. -d Delete identity. -D Delete all identities. -x Lock agent. -X Unlock agent. -s pkcs11 Add keys from PKCS#11 provider.
-K
là táo cụ thể. Xem help.github.com/articles/ từ
Điều này đã xảy ra với tôi sau khi khởi động lại kể từ khi nâng cấp từ OS X El Capitan (10.11) lên macOS Sierra (10.12). Các ssh-add
giải pháp làm việc tạm thời nhưng sẽ không tồn tại trên khởi động lại khác.
Giải pháp lâu dài là chỉnh sửa (hoặc tạo) ~/.ssh/config
và kích hoạt UseKeychain
tùy chọn.
Host *
UseKeychain yes
Liên quan: macOS liên tục hỏi cụm mật khẩu ssh của tôi kể từ khi tôi cập nhật lên Sierra
ssh-add -K /Users/***/.ssh/git/id_rsa
nhưng nó vẫn không hoạt động sau khi khởi động lại thiết bị đầu cuối ... cảm ơn bạn.
Nếu bạn đã thử ssh-add
và bạn vẫn được nhắc nhập cụm mật khẩu của mình thì hãy thử sử dụng ssh-add -K
. Điều này thêm mật khẩu của bạn vào móc khóa của bạn.
Cập nhật: nếu bạn đang sử dụng macOS Sierra thì có thể bạn cần phải thực hiện một bước nữa vì những điều trên có thể không còn hoạt động. Thêm phần sau vào ~/.ssh/config
:
Host *
UseKeychain yes
Tôi sẽ thử như sau:
~/.bashrc
tập tin của bạn
SSH_ENV=$HOME/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn 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
}
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
zsh
. Chỉ cần thêm nó vào.zshrc
id_rsa
. Nếu bạn có một tên tùy chỉnh, bạn nên sử dụng ví dụ. /usr/bin/ssh-add ~/.ssh/custom_filename
Điều làm việc cho tôi trên Windows là (tôi đã sao chép mã từ lần đầu tiên repo):
eval $(ssh-agent)
ssh-add
git pull
tại thời điểm đó, nó đã hỏi tôi một lần cuối cho cụm mật khẩu của tôi
Tín dụng: giải pháp đã được lấy từ /unix/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket
Hãy thử thêm phần này vào ~ / .ssh / config :
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
... giả sử khóa riêng của bạn được đặt tên là id_rsa
Tôi đã có một vấn đề tương tự, nhưng các câu trả lời khác đã không khắc phục vấn đề của tôi. Tôi nghĩ rằng tôi sẽ tiếp tục và đăng bài này trong trường hợp người khác có một thiết lập khó khăn như tôi.
Hóa ra tôi có nhiều khóa và Git đã sử dụng sai trước. Nó sẽ nhắc tôi cho cụm mật khẩu của tôi và tôi sẽ nhập nó, sau đó Git sẽ sử dụng một khóa khác sẽ hoạt động (mà tôi không cần phải nhập cụm mật khẩu vào).
Tôi vừa xóa khóa mà nó đang sử dụng để nhắc tôi nhập cụm mật khẩu và bây giờ nó hoạt động!
Có vẻ như bạn có thể gặp rắc rối với chính SSH-Agent. Tôi sẽ thử khắc phục sự cố đó.
1) Bạn đã thực hiện ssh-add để thêm khóa vào SSH chưa?
2) Bạn có đóng cửa sổ đầu cuối giữa các lần sử dụng không, vì nếu bạn đóng cửa sổ, bạn sẽ phải nhập lại mật khẩu khi mở lại.
Nếu các giải pháp trên không hiệu quả với tôi, một điều cần kiểm tra là bạn thực sự cũng có khóa chung (thường là id_rsa.pub
). Đó là điều bất thường phải không, nhưng đó là nguyên nhân đối với tôi.
Để tạo khóa chung từ khóa riêng của bạn:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Tôi thử các giải pháp khác nhau nhưng không có gì giúp được. Nhưng bước này ( môi trường SSH GitBash của tôi luôn hỏi cụm mật khẩu của tôi, tôi có thể làm gì? ) Từ các đường nối của Bitbucket.com hoạt động tốt:
Ý tưởng là:
bạn tạo ~/.bashrc
tập tin
thêm theo kịch bản:
SSH_ENV=$HOME/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn 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
}
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
chạy lại Bash
Một giải pháp khả thi khác không được đề cập ở trên là kiểm tra điều khiển từ xa của bạn bằng lệnh sau:
git remote -v
Nếu điều khiển từ xa không bắt đầu bằng git mà bắt đầu bằng https, bạn có thể muốn thay đổi nó thành git bằng cách làm theo ví dụ dưới đây.
git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed