Trả lời có trong một kịch bản bash


24

Tôi đang cố gắng thực hiện một git clonekịch bản bash, nhưng lần đầu tiên tôi chạy tập lệnh và máy chủ vẫn chưa biết thì tập lệnh thất bại. Tôi có một cái gì đó như thế này:

yes | git clone git@github.com:repo/repoo.git
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? 

Nhưng nó bỏ qua yes. Bạn có biết làm thế nào để buộc git clonethêm khóa vào máy chủ đã biết không?


Thế còn echo yes | git clone git@github.com:repo/repoo.git?
asfallows

3
@asfallows, Rafael: echo yeskhông phải là một cách tiếp cận tốt: lần thứ hai bạn chạy lệnh, ssh sẽ không hỏi bạn có muốn tiếp tục không vì khóa máy chủ đã được biết.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


21

Thêm vào đây vào ~/.ssh/configtập tin của bạn :

Host github.com
    StrictHostKeyChecking no

Bất cứ điều gì sử dụng ứng dụng khách open-ssh để thiết lập trình điều khiển từ xa (với trình khách git thực hiện) nên bỏ qua các kiểm tra chính cho github.com.

Đây thực sự là một ý tưởng tồi vì bất kỳ hình thức bỏ qua séc nào (cho dù bạn tự động nhấn có hoặc bỏ qua séc ở vị trí đầu tiên) sẽ tạo chỗ cho một người đàn ông trong thỏa hiệp an ninh trung bình. Một cách tốt hơn sẽ là lấy và xác thực dấu vân tay và lưu trữ nó trong known_hoststệp trước khi cần chạy một số tập lệnh tự động kết nối.


2
Với một ưu tiên mạnh mẽ để lấy và xác nhận dấu vân tay và lưu trữ nó trong known_hoststệp trước đó .
Gilles 'SO- ngừng trở nên xấu xa'

1
Cảm ơn rất nhiều về câu trả lời của bạn, tôi đã kết thúc theo cách tiếp cận thêm dấu vân tay trong các know_hosts. Nó giống như an toàn hơn :)
Rafael

Oh tôi đang sử dụng con rối để làm điều này. Nếu ai đó quan tâm đến việc sử dụng nó ở đây là công thức: gist.github.com/1155725
Rafael

5

yesđầu ra y. Nhu cầu chấp nhận khóa RSA yes. Bạn có thể thử yes yes | git clone git@github.com:repo/repoo.gitđể yeskết quả đầu ra yesthay vì y.


5
Đối với một số lý do, điều đó đã không làm việc với git clone, đối với tôi.
Matt V.

Nó cũng không làm việc cho tôi. Cũng echo "yes" | ...không. Tôi nghĩ rằng gitkhông chấp nhận đường ống. Có lẽ chỉ trong một số phiên bản?
udondan

3

Chạy ssh-keyscan -H github.com >> ~/.ssh/known_hoststrước khi nhân bản sẽ thêm khóa và ngăn lời nhắc xuất hiện.

Tất nhiên cách tiếp cận này cũng dễ bị tấn công MITM.


1

Tôi đã gặp vấn đề này trước đây. Mặc dù nó đã có trên một máy Windows nhưng chúng tôi cần sử dụng ssh để kết nối với máy chủ từ xa. Chúng tôi gặp vấn đề tương tự là kết nối đầu tiên luôn thất bại vì nó không nhận ra các phím.

Tôi đã giải quyết nó bằng cách kết nối thủ công và tìm khóa đăng ký và nhập nó vào đầu tập lệnh. Trong Linux, đó phải là một ý tưởng chung giống nhau: bạn muốn thêm máy chủ này vào danh sách các máy chủ đáng tin cậy để ssh sẽ không hỏi bạn nếu bạn tin tưởng anh ta mỗi lần.

Khi bạn kết nối thủ công, hãy tìm tệp chính và thêm nó vào tệp know_hosts của bạn. Bằng cách này, ssh sẽ xem qua tập tin đó, giả sử bạn biết những gì bạn đang làm và tiến hành mà không hỏi bạn về dấu vân tay.

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.