2012-03-16 61 views
7

Tôi đang sử dụng git cho một trong các dự án của mình. Bất cứ khi nào tôi cố gắng đẩy tới repo từ xa, git nhắc tôi nhập mật khẩu bằng cửa sổ X, vì vậy nếu tôi cố gắng ssh vào máy tính và đẩy tôi cũng phải chuyển tiếp X để làm cho cửa sổ xuất hiện trên màn hình của tôi.tạo lời nhắc git cho mật khẩu trong terminal

Có thể tạo lời nhắc git cho mật khẩu trong chính thiết bị đầu cuối không?

+0

Tôi đang sử dụng phiên bản git git phiên bản 1.7.1 –

+0

Tôi nghĩ rằng đó là ssh yêu cầu mật khẩu không git – Shahbaz

+0

ya có thể là repo riêng, yêu cầu mật khẩu khóa công khai của tôi, để kiểm tra xem tôi có quyền không để đẩy vào repo đó. X chuyển tiếp được ngăn chặn trong máy chủ đó ngay bây giờ, vì vậy không thể đẩy. –

Trả lời

2

Đây không phải là hành vi của git; bạn đang đẩy một repo qua SSH, và SSH đang yêu cầu mật khẩu của bạn. Các ssh manpage nói:

Nếu ssh không có một thiết bị đầu cuối liên kết với nó nhưng DISPLAY và SSH_ASKPASS được thiết lập, nó sẽ thực hiện chương trình theo quy định của SSH_ASKPASS và mở một cửa sổ X11 để đọc cụm từ mật khẩu.

Thông thường khi bạn ssh đến một máy chủ từ xa, ssh xóa DISPLAY biến để ngăn chặn chính xác các loại vấn đề, nhưng nó có thể bạn có thể đã được cấu hình ssh để tuyên truyền các biến môi trường hơn so với cấu hình mặc định cho phép. Trong trường hợp đó, hãy chắc chắn rằng ssh không không sao chép biến DISPLAY vào máy chủ từ xa (nếu bạn cần chuyển tiếp X11, ssh sẽ tạo biến DISPLAY mới, không cần biến ban đầu). Điều đó sẽ ngăn không cho ssh-askpass được khởi chạy trên máy chủ mà bạn đang chạy git.

5

@Screwtape là (ít nhất một phần) chính xác, trong his answer. Nếu bạn nhìn vào this page, nó cho thấy cùng một vấn đề (giữa một vấn đề lớn hơn), nhưng nó cũng chỉ ra làm thế nào để đi xung quanh lỗi này.

Trong khi bạn đang SSH'ing vào máy tính mà bạn muốn chạy lệnh git, hãy thử:

$ unset SSH_ASKPASS 

này unsets biến môi trường $ SSH_ASKPASS. Nếu bạn chạy lệnh git mà bạn muốn chạy, nó sẽ hoạt động. Nó hoạt động trong cửa sổ putty của tôi trong cửa sổ mà tôi đang SSH'ing đến một máy chủ CentOS. Lưu ý rằng thay đổi chưa được đặt này là NOT vĩnh viễn (có thể là điều tốt) và bạn cần phải bỏ đặt lại tham số này vào lần đăng nhập tiếp theo, nhưng nó sẽ hoàn thành công việc nếu bạn muốn chạy tập lệnh GIT.

Tại sao lỗi này vẫn tồn tại, mặc dù nó được báo cáo cách đây hơn hai năm? From this source, có vẻ như Windows không bao giờ đặt biến môi trường DISPLAY, và do đó GIT sẽ không hoạt động đúng nếu nó thực hiện kiểm tra này. Do đó, chức năng này bị bỏ sót (rõ ràng) và câu trích dẫn của @Screwtape được sao chép chính xác nhưng không được áp dụng trong thực tế.

Các vấn đề liên quan