Làm cách nào để xóa cụm mật khẩu cho khóa SSH mà không phải tạo khóa mới?


1033

Tôi đặt cụm mật khẩu khi tạo khóa SSH mới trên máy tính xách tay của mình. Nhưng, như tôi nhận ra bây giờ, điều này khá đau đớn khi bạn đang cố gắng cam kết ( GitSVN ) đến một địa điểm từ xa qua SSH nhiều lần trong một giờ.

Một cách tôi có thể nghĩ đến là xóa các khóa SSH của mình và tạo mới. Có cách nào để loại bỏ cụm mật khẩu, trong khi vẫn giữ các khóa giống nhau không?


9
Tôi nghĩ rằng câu trả lời nghiêm ngặt thực sự là câu trả lời của Torsten Marek. Thủ thuật ssh-agent có thể là những gì bạn đang tìm kiếm, nhưng đó là một câu trả lời cho một câu hỏi khác.
Tardate

1
Cụm mật khẩu không chỉ là một khóa để mở khóa SSH riêng, mà là một phần của cơ chế mã hóa. Một phần là khóa SSH của bạn, phần khác - cụm mật khẩu được nhập thủ công. Chỉ khi cả hai phần đều đúng, khóa tổng hợp được tạo từ chúng khi đang bay sẽ có hiệu lực. Vì vậy, cụm mật khẩu khác tương ứng với khóa SSH khác (và không có cụm mật khẩu nào là trường hợp đặc biệt của "cụm mật khẩu khác").
Paul

97
Đóng các câu hỏi như vậy cũng giống như tranh luận về tác dụng phụ của thời tiết trong các ngôn ngữ lập trình nên được cho phép vì chúng có "thuần túy" hay không. Những người theo chủ nghĩa thuần túy luôn chạy điên cuồng, trong khi những người khác không cho một điều chết tiệt vì đó là một tính năng hữu ích và làm cho cuộc sống dễ dàng hơn. Ssh là cần thiết, thậm chí khó khăn, nó không liên quan đến lập trình nghiêm ngặt ... đừng đóng những câu hỏi như vậy. : |
sjas

Câu trả lời:


1933

Câu trả lời ngắn:

$ ssh-keygen -p

Điều này sau đó sẽ nhắc bạn nhập vị trí keyfile, cụm mật khẩu cũ và cụm mật khẩu mới (có thể để trống để không có cụm mật khẩu).


Nếu bạn muốn làm tất cả trên một dòng mà không cần nhắc:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

Quan trọng: Lưu ý rằng khi thực hiện các lệnh, thông thường chúng sẽ được ghi vào ~/.bash_historytệp của bạn (hoặc tương tự) bằng văn bản thuần bao gồm tất cả các đối số được cung cấp (ví dụ: cụm mật khẩu trong trường hợp này). Do đó, bạn nên sử dụng tùy chọn đầu tiên trừ khi bạn có lý do cụ thể để làm khác.

Mặc dù lưu ý rằng bạn vẫn có thể sử dụng -f keyfilemà không cần phải chỉ định -Pcũng như -N, và keyfile mặc định ~/.ssh/id_rsa, vì vậy trong nhiều trường hợp, nó thậm chí không cần thiết.

Bạn có thể muốn xem xét sử dụng ssh-agent, có thể lưu trữ cụm mật khẩu trong một thời gian. Các phiên bản mới nhất của gpg-agent cũng hỗ trợ giao thức được sử dụng bởi ssh-agent.


464
Để rõ ràng: bạn chỉ có thể chạy ssh-keygen -ptrong một thiết bị đầu cuối. Sau đó, nó sẽ nhắc bạn về một keyfile (mặc định là tệp chính xác cho tôi ~/.ssh/id_rsa), cụm mật khẩu cũ (nhập những gì bạn có bây giờ) và cụm mật khẩu mới (không nhập gì).
Henrik N

34
Ví dụ. :ssh-keygen -p -P oldpassphrase -N "" -f ~/.ssh/id_rsa
Fedir RYKHTIK

24
-1 để làm cho người dùng nhập mật khẩu của mình vào thiết bị đầu cuối và làm cho nó có thể truy cập thông qua ~/.bash_history. Tốt hơn là nên gõ:$ cd ~/.ssh && ssh-keygen -f id_dsa -p
betoharres

5
Các bạn nên lưu ý rằng nếu bạn nhập lệnh vào shell bắt đầu một khoảng trắng (màu trắng) thì lệnh đó không được ghi vào ~/.bash_hstoryIe. sử dụng `ssh-keygen -p -P oldpassphrase -N" "-f ~ / .ssh / id_rsa` và bạn vẫn ổn (trừ khi bạn có keylogger khác ở đó). Bạn cũng có thể thoát khỏi hồ sơ từ lịch sử ..
Huge

14
Có thể đáng để thêm một dòng nói rằng điều này sẽ ghi đè lên tệp hiện có và không nhắc nhở cho một vị trí mới.
Lars Francke

46

$ ssh-keygen -p đã làm cho tôi

Mở git bash. Dán:$ ssh-keygen -p

Nhấn enter cho vị trí mặc định.

Nhập cụm mật khẩu cũ

Nhập cụm mật khẩu mới - BLANK

Xác nhận cụm mật khẩu mới - BLANK

NÓ nỗi đau của việc nhập mật khẩu cho git đẩy đã biến mất.

Cảm ơn!


Nếu khi bạn nhấn enter cho $ ssh-keygen -pvà khóa của bạn không ở vị trí mặc định nói (/Users/yourname/.ssh/id_rsa), bạn có thể trả lời bằng cách đặt /Users/yourname/.ssh/yourkeykhi được nhắc
Chigozie Orunta

37

Bạn có thể muốn thêm phần sau vào .bash_profile (hoặc tương đương), để bắt đầu ssh-agent khi đăng nhập.

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi

Trên một số bản phân phối Linux (Ubuntu, Debian) bạn có thể sử dụng:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

Điều này sẽ sao chép id được tạo vào một máy từ xa và thêm nó vào móc khóa từ xa.

Bạn có thể đọc thêm ở đâyở đây .


7
Không phân phối hiện đại bắt đầu một đại lý ssh ra khỏi hộp?
Quân đội Arvin

Trên một số bản phân phối Linux (Ubuntu, Debian), bạn có thể sử dụng: ssh-copy-id -i ~ / .ssh / id_dsa.pub tên người dùng @ host Giả sử bạn có quyền truy cập theo cách đó. Và mặc dù từ năm 2008, có lẽ nó nên được chỉnh sửa để tham khảo id_rsa.pub (vâng tôi có thể chỉnh sửa nó nhưng tôi không cảm thấy thoải mái khi làm điều đó với các tác phẩm của người khác - và nó đặc biệt phù hợp với điều này).
Pryftan

@TroelsArvin Có. Nhưng otoh có những lúc nó bị giết (mặc dù tình huống tôi gặp phải không xuất hiện - trừ khi X11 có vấn đề và bạn phải khởi động lại ... đó có thể là một ví dụ như vậy). Trong trường hợp đó, bạn phải 'tái tạo' nó.
Pryftan

8

Để thay đổi hoặc xóa cụm mật khẩu, tôi thường thấy đơn giản nhất là chỉ truyền vào các cờ pfsau đó để hệ thống nhắc tôi cung cấp cụm mật khẩu:

ssh-keygen -p -f <name-of-private-key>

Ví dụ:

ssh-keygen -p -f id_rsa

Nhập mật khẩu trống nếu bạn muốn xóa cụm mật khẩu.

Một mẫu chạy để xóa hoặc thay đổi mật khẩu trông giống như thế này:

ssh-keygen -p -f id_rsa
Enter old passphrase: 
Key has comment 'bcuser@pl1909'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

Khi thêm cụm mật khẩu vào khóa không có cụm mật khẩu, lần chạy sẽ trông giống như thế này:

ssh-keygen -p -f id_rsa
Key has comment 'charlie@elf-path'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

3

Trên cửa sổ, bạn có thể sử dụng PuttyGen để tải tệp khóa riêng, xóa cụm mật khẩu và sau đó ghi đè lên tệp khóa riêng hiện có.


2

Trên máy Mac, bạn có thể lưu cụm mật khẩu cho khóa ssh riêng trong Keychain của mình, điều này làm cho việc sử dụng nó trong suốt. Nếu bạn đã đăng nhập, nó có sẵn, khi bạn đăng xuất, người dùng root của bạn không thể sử dụng nó. Xóa cụm mật khẩu là một ý tưởng tồi bởi vì bất kỳ ai có tệp đều có thể sử dụng nó.

ssh-keygen -K

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

UseKeychain yes
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.