Làm cách nào để git không nhắc mật khẩu cho khóa ssh trên windows?


43

Tôi đang sử dụng git bash và tôi thiết lập khóa ssh bằng ssh-keygen và mỗi lần tôi làm gì đó với repo git hãy hỏi tôi mật khẩu cho /c/Users/jankiewj/.ssh/id_rsa. Có cách nào để vô hiệu hóa cụm mật khẩu đó.


Trang này trên serverfault có thể giúp serverfault.com/questions/194567/ từ

@Radoo nó không giúp được gì.
jcubic

Câu trả lời:


56

Bạn có thể chạy cái này trong git bash:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

nó sẽ yêu cầu cụm từ thông qua trong lệnh thứ hai, và đó là nó. Mỗi hành động bổ sung bạn sẽ cần thực hiện (một khi đã yêu cầu cụm từ vượt qua) sẽ không hỏi bạn cụm từ vượt qua (xem ví dụ trong ảnh chụp màn hình bên dưới):

thêm cụm từ trong git bash trên Windows


7
Tôi phải nhập lại, ngay khi tôi đóng git bash ... có giải pháp lâu dài không?
Đen

@Black đó là mỗi phiên bash, tôi đã đặt cái này vào .bashrcmỗi lần tôi mở git bash tôi nhận được lời nhắc và cho phiên đó tôi đã cài đặt xong.
jcubic

Chính xác những gì bạn đặt trong .bashrc? Và .bashrc ở đâu?
Đen

Chỉnh sửa: nevermind, Bạn phải tạo tập tin yourselv ~/.bashrcsau đó nhập các dòng từ bài đăng của bạn vào đó và lưu, đó là nó :) thx!
Đen

Thay vì sử dụng các dòng trên, đặc biệt là trong .bashrc, tôi sẽ sử dụng một tập lệnh và đặt nó vào trong .bash_profilehoặc .profile. Đây là một đoạn của phần chính của tôi .bash_profile, nó sẽ giải quyết điều này cho bất cứ ai vẫn đang tìm kiếm một câu trả lời; Nó tương tự như một câu trả lời dưới đây. Ở đầu tập lệnh tôi tải lên .bashrc, nếu không áp dụng, hãy bỏ nó đi. Lưu ý: bạn sẽ cần thay đổi các tham chiếu id_rsathành bất cứ điều gì bạn đặt tên cho khóa SSH riêng tư của mình và có thể là đường dẫn.
Rockin4Life33

9

Một giải pháp tốt hơn và lâu dài hơn là tự động khởi chạy ssh-agent khi mở git bash trên windows. Bạn có thể sao chép / dán bên dưới trong .profile hoặc .bashrc của bạn. Tôi thích đặt nó trên .profile

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

Giải pháp này được lấy từ bài viết trợ giúp github này


Tôi đã đặt mã đơn giản của mình vào .bashrc, giải pháp của bạn khác nhau như thế nào? Trên Windows bash, mỗi shell là độc lập nên tác nhân không bao giờ chạy khi bạn chạy shell.
jcubic

Giải pháp hoạt động tốt bằng cách đặt mã vào .bashrc. Chỉ nhắc mật khẩu ssh lần đầu tiên. Bảo vệ cuộc sống của tôi. Cảm ơn bạn.
Ben Asmussen

cảm ơn điều đó rất cứu mạng tôi
gumuruh

Đây thực sự nên là câu trả lời được chấp nhận vì nó đưa ra một giải pháp bền bỉ và đáp ứng tốt hơn những gì tôi nghĩ OP đang hỏi.
Richard D

Tôi phải làm gì nếu vô tình gõ nhầm mật khẩu khi khởi động? Chỉnh sửa: Dựa trên superuser.com/a/271673/647110 , bạn có thể ssh-add -Dxóa tất cả các phím.
Nils Guillermin

1

Tôi không chắc chắn nếu tôi muốn giới thiệu nó, nhưng khi bạn tạo Khóa và yêu cầu đặt mật khẩu, chỉ cần nhấn enter và bỏ qua mật khẩu.

Hãy xem liên kết này để biết cách sử dụng ssh-keygen: https://help.github.com/articles/usiness-with-ssh-key-passph cụm /

Có lẽ ssh-agentcó thể giúp bạn bằng cách nào đó. Nhưng không chắc chắn mà không biết hệ thống hiện tại của bạn.


4
chắc chắn không phải là một câu trả lời hay
Kennet Celeste

Đó là cách duy nhất để giải quyết nó trên windows 10. Sau khi làm theo tất cả các bước "Tạo khóa SSH mới và thêm nó vào hướng dẫn github của ssh-agent", nó luôn hỏi tôi về cụm mật khẩu. Ngay cả sau khi thêm nó. Hành vi đó đã phá vỡ luồng triển khai maven của tôi bởi vì trong mvn release:performgiai đoạn nó cố gắng kiểm tra thẻ phát hành mà không cung cấp cụm mật khẩu. Vì vậy, chỉ xóa cụm mật khẩu đã giải quyết vấn đề này.
Fernando Miguel Carvalho

-3

Nhập lệnh git này vào vị trí repos của bạ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). Không nhập bất cứ thứ gì vào mật khẩu mới và nó sẽ xóa cụm mật khẩu


1
Để lại một mật khẩu trống là không an toàn và nhiều nhà phát triển công ty sẽ không thể có một mật khẩu trống do hạn chế. Đó là một cách giải quyết khập khiễng, không phải là giải pháp cho vấn đề OP.
cbaldan

có lẽ khập khiễng, nhưng chỉ sử dụng tại địa phương, Tasty và expeditious ™
Jim P
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.