2013-03-21 30 views
25

Có thể thay đổi người dùng ssh tạm thời cho một "git push remote master" mà không gây rối với .git/config hoặc "git remote", hoặc sử dụng toàn bộ url từ xa không?Làm thế nào để thay đổi người dùng git ssh tạm thời từ xa?

[[email protected] gitrepo]# git push [email protected] master # this does not work, but how great it would be 
[[email protected] gitrepo]# USER=otheruser git push remote master # still asks password for root 

Trả lời

31

Bạn đã cố gắng sử dụng toàn bộ từ xa URL?

git push ssh://<temp_user>@<host>/<repo_path> <local_branch>:<remote_branch> 

và bạn sẽ được nhắc nhở để cung cấp mật khẩu

+0

Có, tôi đã thử nó. Thông thường tôi sao chép-dán từ "git remote -va". Nó hoạt động, mặc dù nó tạo ra một nhánh theo dõi từ xa bổ sung khi kéo. – Andor

+0

Tôi thường sử dụng pubkey để đẩy các cam kết. Mặc dù tôi đã chỉ định một người dùng khác, tôi vẫn nhận được 'Permission denied (publickey). gây tử vong: Không thể đọc từ kho lưu trữ từ xa.' Làm thế nào để đẩy để tôi có thể nhập mật khẩu cho tài khoản khác? – nipponese

5

Địa chỉ ssh đăng ký với git từ xa có thể đã bao gồm tên người dùng, do đó bạn sẽ cần phải sử dụng một url ssh hoàn chỉnh như:

[email protected]:arepo 

Điều đó sẽ không làm việc, bởi vì ssh sẽ sử dụng các khóa công khai/riêng tư mặc định (hiện đang được người dùng đầu tiên sử dụng để xác thực).

Bạn có thể đăng ký một từ xa mới trong cấu hình địa phương của bạn:

# use the current ssh address registered for origin, changing just the user 
# but you need a config file 
git remote add originOtheruser otheruser:arepo 

Bạn phải có một tập tin $HOME/.ssh/config, để xác định các mục nhập ssh 'otheruser', bởi vì ssh cần phải biết những gì công cộng/khóa riêng nó cần phải sử dụng: nó không thể là những người mặc định ($HOME/.ssh/id_rsa$HOME/.ssh/id_rsa.pub)

Xem ví dụ "how to add deploy key for 2 repo with 1 user on github"

Host otheruser 
HostName remote 
User otheruser 
IdentityFile ~/.ssh/otheruser 

Đó giả bạn đã được lưu trữ/phím công tư cho otheruser như:

$HOME/.ssh/otheruser 
$HOME/.ssh/otheruser.pub 

Bây giờ, bạn có thể sử dụng từ xa mới để đẩy:

git push originOtheruser master 
+1

tôi đã tìm kiếm thông qua Stackoverflow và Google trước khi hỏi câu hỏi này. Tôi cần một giải pháp nhanh/on-the-fly/ad hoc/tạm thời, không phải là vĩnh viễn. Tên người dùng là cố ý không được bao gồm trong url từ xa và xác thực khóa công khai là tùy chọn trên máy chủ repo này. Điều này thực sự không phải là điều tôi muốn. – Andor

+0

@ user77376 "Xác thực khóa công khai là tùy chọn trên máy chủ repo này"? Sau đó, nó không phải là một kết nối ssh. Nếu bạn cần phải chỉ định một người dùng khác, sau đó '$ HOME/.ssh/config' nó được. Đó có thể không phải là những gì bạn muốn, nhưng đó là những gì được yêu cầu để sử dụng ssh với một người dùng khác nhau: một cách để xác định khóa công khai/riêng tư. Nếu bạn hiện không có 'id_rsa (.quán rượu) ở đâu đó, sau đó chúng ta không nói về shh (hay không phải là ssh mà tôi quen thuộc). – VonC

+1

Đó là ssh đồng bằng, nhưng người ta cũng có thể xác thực bằng mật khẩu. Đối với một kết nối ssh thông thường, bạn nên chỉ định tên người dùng đầu tiên và mật khẩu/khóa công khai/kerberos hoặc bất kỳ xác thực nào mà máy chủ chấp nhận. – Andor

17

Khi bạn đã thực hiện các cam kết, bạn có thể sử dụng cú pháp sau:

git push https://<username>@github.com/<github repository> <local branch name>:<remote branch name> 

Bạn sẽ được yêu cầu cho github của bạn mật khẩu để xử lý việc đẩy.

Ví dụ, nếu tên người dùng github của bạn là "foobar", url bản sao kho là "https://github.com/bar/ish.git", và các chi nhánh địa phương và từ xa được đặt tên là "nonce", bạn có thể sử dụng như sau:

git push https://[email protected]/bar/ish.git nonce:nonce 
+2

Lưu ý Github: Nếu xác thực hai yếu tố (2FA) được bật, bạn phải nhập mã thông báo truy cập cá nhân thay vì mật khẩu của bạn, khi được nhắc nhập mật khẩu của bạn (Xem: https://help.github.com/articles/providing- mã 2fa-authentication-code của bạn/# qua-the-command-line) – qff

8

tôi sử dụng

git push https://github.com/${userName}/${repoName} 

Nó sẽ nhắc bạn tên người dùng và mật khẩu đầu vào

+2

Đây là Github cụ thể, trong khi câu hỏi ban đầu là về Git tổng quát hơn. –

+0

Lưu ý Github: Nếu xác thực hai yếu tố (2FA) được bật, bạn phải nhập mã thông báo truy cập cá nhân thay vì mật khẩu của bạn, khi được nhắc nhập mật khẩu của bạn (Xem: https://help.github.com/articles/providing- của bạn-2fa-xác thực-mã/# thông qua-the-dòng lệnh) – qff

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