2013-02-04 48 views
7

Tôi đang cố gắng hiểu cách cấu hình trong .ssh/config và .git/config tương tác.Nhiều tài khoản github: giá trị nào cho Máy chủ trong .ssh/config?

Đây là tình huống: Tôi có hai tài khoản github riêng biệt, hãy gọi chúng là GH0 và GH1 và tôi muốn tương tác với cả hai "không cần mật khẩu", tức là sử dụng các khóa ssh trong ~/.ssh/id_rsa.GH0.pub~/.ssh/id_rsa.GH1.pub. Tại thời điểm này công trình cho GH0 nhưng không cho GH1. (Ví dụ, push lệnh để GH1 chết với ERROR: Repository not found.\nfatal: The remote end hung unexpectedly.;. ssh -T [email protected] công trình, nhưng chỉ vì nó kết nối GH0)

này có nghĩa là cho mỗi người trong số các tài khoản này github tôi phải có một phần tương ứng trong ~/.ssh/config, chỉ định tệp khóa ssh nào để sử dụng cho nó. (Ví dụ: phần dành cho GH0 sẽ có thứ gì đó như IdentityFile ~/.ssh/id_rsa.GH0, v.v.)

Câu hỏi đặt ra là: tôi còn phải đưa gì vào mỗi phần này? Cụ thể hơn,

tôi phải đặt đối số nào làm từ khóa Host trong ~/.ssh/config?

Thông tin mà tôi đã tìm thấy từ trước đến nay không có ý nghĩa gì đối với tôi. Trong một số ví dụ, tôi thấy các nội dung như

Host github.com 
    Hostname github.com 
    User git 
    IdentityFile ~/.ssh/id_rsa 

Host ac2.github.com 
    Hostname github.com 
    User git 
    IdentityFile ~/.ssh/id_rsa_ac2 

"ac2" ở đâu vậy? tiền tố trong Host thứ hai đến từ ???

Tôi tìm tài khoản github tương ứng ở đâu?

Một số thông tin tôi đã tìm thấy một dẫn đến đoán rằng đối số đến từ khóa Host là trong thực tế tùy ý, ngụ ý rằng sau đây sẽ là tốt quá

Host omgwtfbbq 
    Hostname github.com 
    User git 
    IdentityFile ~/.ssh/GH0 

Host 4.8.15.16.23.42 
    Hostname github.com 
    User git 
    IdentityFile ~/.ssh/GH1 

Nhưng nếu vậy, điều này làm tăng thêm một câu hỏi khác: Làm cách nào để git (hoặc github) biết được hai phần nào trong số hai phần này sẽ sử dụng cho bất kỳ lệnh nhất định nào?

lần nữa, tôi đoán rằng điều này sẽ được xác định trong tập tin .git/config của dự án, theo một số [remote ...] phần, nhưng làm thế nào?

Tôi phải nghĩ đến vì, vì một điều, tôi không thể tìm thấy tài liệu để diễn giải các cặp khóa-giá trị trong .git/config. Gần nhất tôi đã tìm thấy là trang người đàn ông cho git-config, nhưng tôi không thể tìm thấy bất kỳ tài liệu nào trong trang này cho trường url = ... trong phần [remote ...]. Trang người dùng cho git-remote cũng không có tài liệu về trường này.

+0

Về dự đoán: tìm "remote. .url" trong hướng dẫn cấu hình git. – patthoyts

+0

Thực hiện điều khiển từ xa 'git thêm omgwtfbbq git @ omgwtfbbq: người dùng/repo.git',' git kéo omgwtfbbq master', và xem có hoạt động không ... –

+0

@HieryNomus: cảm ơn! Vui lòng đăng nhận xét của bạn dưới dạng câu trả lời để tôi có thể chọn nhận xét đó – kjo

Trả lời

5

Làm như sau:

$ git remote add omgwtfbbq [email protected]:user/repo.git 
$ git pull omgwtfbbq master 

này sẽ sử dụng Host bí danh bạn đã xác định trong ~/.ssh/config của bạn như các máy chủ git, và do đó sẽ sử dụng IdentityFile bạn đã thiết lập.

1

Có, dòng Host trong tệp .ssh/config là bí danh. Bạn sử dụng nó thay cho github.com và bất kỳ thứ gì sử dụng SSH đều sẽ đọc tệp và trao đổi trong tên máy chủ thực và cũng sử dụng keyfile và tên người dùng đã cho, nếu chúng đã được cung cấp.

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