Lưu ý rằng có ít nhất hai báo cáo lỗi về việc ssh-add -d/-D
không xóa khóa:
Vấn đề chính xác là:
ssh-add -d/-D
chỉ xóa các khóa được thêm thủ công khỏi gnome-keyring.
Không có cách nào để xóa các phím được thêm tự động.
Đây là lỗi ban đầu và nó vẫn còn tồn tại.
Vì vậy, ví dụ: nếu bạn có hai danh tính ssh được tải tự động khác nhau được liên kết với hai tài khoản GitHub khác nhau - nói cho công việc và cho gia đình - không có cách nào để chuyển đổi giữa chúng. GitHubtakes người đầu tiên phù hợp, vì vậy bạn luôn xuất hiện với tư cách là người dùng 'nhà' của mình với GitHub, không có cách nào để tải mọi thứ lên các dự án công việc.
Cho phép ssh-add -d
áp dụng cho các khóa được tải tự động (và ssh-add -t X
để thay đổi tuổi thọ của các khóa được tải tự động), sẽ khôi phục hành vi mà hầu hết người dùng mong đợi.
Chính xác hơn, về vấn đề:
Thủ phạm là gpg-keyring-daemon
:
- Nó thay thế hoạt động bình thường của ssh-agent, chủ yếu chỉ để nó có thể bật lên một hộp đẹp mà bạn có thể nhập cụm mật khẩu cho khóa ssh được mã hóa.
- Và nó lướt qua
.ssh
thư mục của bạn , và tự động thêm bất kỳ khóa nào nó tìm thấy cho đại lý của bạn.
- Và nó sẽ không cho phép bạn xóa các phím đó.
Làm thế nào để chúng ta ghét điều này? Chúng ta đừng đếm đường - cuộc đời quá ngắn ngủi.
Lỗi được kết hợp bởi vì các máy khách ssh mới hơn sẽ tự động thử tất cả các khóa trong tác nhân ssh của bạn khi kết nối với máy chủ.
Nếu có quá nhiều, máy chủ sẽ từ chối kết nối.
Và vì gnome-keyring-daemon đã tự quyết định có bao nhiêu khóa bạn muốn ssh-agent của bạn có, và đã tự động tải chúng, VÀ KHÔNG ĐƯỢC BẠN XÓA BEMNG BẠN, bạn sẽ nướng.
Lỗi này vẫn được xác nhận trong Ubuntu 14.04.4, gần đây như hai ngày trước (ngày 21 tháng 8 năm 2014)
Một cách giải quyết có thể:
- Làm
ssh-add -D
để xóa tất cả các phím được thêm bằng tay của bạn . Điều này cũng khóa các khóa được thêm tự động, nhưng không được sử dụng nhiều vì gnome-keyring
sẽ yêu cầu bạn mở khóa bằng mọi cách khi bạn thử làm một git push
.
- Điều hướng đến
~/.ssh
thư mục của bạn và di chuyển tất cả các tệp chính của bạn ngoại trừ tệp bạn muốn xác định vào một thư mục riêng gọi là sao lưu. Nếu cần bạn cũng có thể mở cá ngựa và xóa các phím từ đó.
- Bây giờ bạn sẽ có thể làm
git push
mà không có vấn đề.
Một cách giải quyết khác:
Những gì bạn thực sự muốn làm là tắt gpg-keyring-daemon
hoàn toàn.
Truy cập System --> Preferences --> Startup Applications
và bỏ chọn SSH Key Agent (Gnome Keyring SSH Agent)
hộp "" - bạn sẽ cần cuộn xuống để tìm nó.
Bạn vẫn sẽ nhận được một ssh-agent
, chỉ bây giờ nó sẽ hoạt động hoàn toàn: không có khóa nào được tự động tải, bạn chạy ssh-add để thêm chúng và nếu bạn muốn xóa khóa, bạn có thể. Tưởng tượng rằng.
Nhận xét này thực sự gợi ý:
Giải pháp là giữ cho gnome-keyring-manager
không bao giờ bắt đầu, điều khó khăn cuối cùng đã đạt được bằng cách loại bỏ quyền thực thi của tệp chương trình.
Ryan Lue thêm một trường hợp góc thú vị khác trong các ý kiến :
Trong trường hợp điều này giúp được bất cứ ai: Tôi thậm chí đã cố gắng xóa hoàn toàn các tệp id_rsa
và id_rsa.pub
tệp và khóa vẫn hiển thị.
Hóa ra gpg-agent
là lưu trữ chúng trong một ~/.gnupg/sshcontrol
tập tin ; Tôi phải tự xóa chúng từ đó.
Đó là trường hợp khi cáckeygrip
đã được thêm vào như ở đây .
ssh-add -d
?