Hộp thoại mật khẩu xuất hiện khi quyền truy cập khóa riêng SSH được đặt thành 0600


71

Tôi đã cài đặt khóa riêng SSH của mình ~/.ssh/id_rsavà đặt quyền cho nó 0600. Khi tôi kết nối với máy chủ SSH sử dụng khóa riêng của mình trong Terminal.app thông qua ssh, một hộp thoại sẽ bật lên và yêu cầu tôi nhập mật khẩu để truy cập id_rsatệp:

nhập mô tả hình ảnh ở đây

Tôi thấy hộp thoại tương tự khi tôi kết nối với máy chủ FTP với máy khách GUI Interarchy.

Cập nhật: Tôi thấy hộp thoại này mỗi khi tôi kết nối bất kể tôi có kiểm tra "Ghi nhớ mật khẩu trong móc khóa của mình không". Nó xuất hiện thêm hai lần nữa nếu nút OK được nhấp bất kể những gì được nhập vào trường mật khẩu.

Khi tôi thư giãn các quyền này, giả sử, 0640tôi không còn thấy hộp thoại hỏi mật khẩu của mình nữa mà sshhủy bỏ với lỗi sau:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
@ CẢNH BÁO: FILE CHÍNH HÃNG KHÔNG GIỚI HẠN! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
Quyền 0640 cho '/Users/myusername/.ssh/id_rsa' quá mở.
Người khác không nên truy cập các tệp khóa riêng của bạn.
Khóa riêng này sẽ bị bỏ qua.
quyền xấu: bỏ qua khóa: /Users/myusername/.ssh/id_rsa

Tôi thấy hộp thoại mật khẩu cực kỳ khó chịu và tôi chắc chắn phải có một số cách để tránh phải loại bỏ hộp thoại này SSH cần truy cập vào id_rsatệp.

Lưu ý: Tôi đang chạy Mac OS X 10.6.8.

Câu trả lời:


70

Hãy chắc chắn rằng bạn có một thư mục tương ứng id_rsa.pubhoặc id_dsa.pubtrong ~/.sshthư mục của bạn .

Khi tôi có id_rsanhưng không tương ứng id_rsa.pub, Mac OS X tiếp tục bật hộp thoại và nhớ mật khẩu trong móc khóa của tôi không làm gì cả.

cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub

tạo tập tin khóa công khai thích hợp cho tôi.

Nếu bạn đã có tệp công khai của mình ở đó (đổi tên thành tên khác) và tạo lại khóa chung bằng cách sử dụng lệnh trên, bạn sẽ nhận thấy rằng tệp được tạo và tệp cũ không bằng nhau. Bằng cách nào đó, các phiên bản cũ hơn của Mac OS X đã tạo một khóa công khai mà Lion không thích nữa, tạo ra nó một lần nữa khắc phục điều đó.

Đối với người tò mò, khóa hoàn toàn giống nhau, phần thay đổi là không có phần "bình luận" sau khóa trên tệp nữa.


2
Giải pháp này có thể không có nhiều ý nghĩa ngay từ cái nhìn đầu tiên, nhưng hãy thử nó. Tôi đã có chính xác cùng một vấn đề và nó đã sửa nó. Tôi luôn sử dụng mật khẩu trên các phím ssh của mình và bạn cũng vậy.
Alex Recarey

3
Giải pháp này đã làm việc cho tôi. Nó không có ý nghĩa nhưng nó hoạt động! (OS X Lion)
bruno077

2
Wow, điều đó không có ý nghĩa gì, nhưng nó chắc chắn đã sửa chữa rất nhiều hành vi lạ trên hệ thống của tôi. Cảm ơn.
Warren Pena

2
Đối với cuộc sống của tôi, tôi đã không thể tìm ra một giải pháp trong nhiều ngày nay với cùng một vấn đề và điều này đã khắc phục nó cho tôi. Điều này không có ý nghĩa gì cả nhưng nó đã khắc phục vấn đề của tôi! Cảm ơn, nâng cao.
Daniel Englander

OMG cảm ơn! Làm việc cho tôi (sư tử núi và sử dụng SourceTree) những hộp thoại đó thật khó chịu.
Sebastian Sastre

91

Đầu tiên, chạy ssh-add -Kvà kiểm tra xem điều này có khắc phục được sự cố của bạn không.

Nếu không:

  • Đã xóa tệp rsa_id.pub và tạo lại một tệp mới (phải ở ~ / .ssh /):

    ssh-keygen -y -f id_rsa > id_rsa.pub
  • Quyền được đảm bảo được đặt thành 600 cho cả id_rsa và id_rsa.pub (phải ở ~ / .ssh /):

    chmod 600 id_rsa*
  • Chạy lệnh sau:

    ssh-add -K

Sau khi làm điều này, tôi không còn được nhắc cung cấp mật khẩu khóa riêng của mình. Điều này dường như thực sự đặt mật khẩu khóa riêng vào vị trí móc khóa chính xác để OS X sử dụng.


7
Đã BẮT ĐẦU cho đến khi tôi chạy qua lệnh "ssh-add -K" của bạn. Tôi không tin làm thế nào phức tạp OSX đã làm cho mọi thứ. +1000
eduncan911

4
fwiw, tôi cần chmod 600(thay vì 644) để nó hoạt động
kangax 13/07/2015

1
Khóa riêng với 644 là không có bueno
xtian

15
ssh-add -Kđã giải quyết vấn đề của tôi
Spechal

2
Không nâng cấp cho đến khi chmod 644 được sửa thành chmod 600, điều này không an toàn.
Tomáš Kafka

20

Trong trường hợp của tôi ssh-add -Kkhông thực hiện được mánh khóe, tôi phải chỉ định khóa:

ssh-add ~/.ssh/id_rsa

không còn -Klựa chọn nào nữa Giải pháp của bạn đã sửa nó. Tôi tự hỏi tại sao tôi cần phải làm điều này. Không bao giờ có bất kỳ lời nhắc mật khẩu.
DanielRe

Cảm ơn! Đây là khi OS X Sierra cuối cùng đã hỏi mật khẩu id_rsa của tôi.
Tomáš Kafka

2
FWIW, -Klá cờ làm việc cho tôi trên Sierra 10.12.2
Chris Wagner

Vâng. Tôi có thể xác nhận. -K không tồn tại và khắc phục sự cố trong Sierra mới nhất! Làm tốt lắm @nathancahill.
Matt Komarnicki

17

Đối với macOS 10.12 Sierra ssh-add -Kcần được chạy sau mỗi lần khởi động lại. Để tránh điều này tạo ra ~/.ssh/configvới nội dung này.

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

Apple đã thêm Technote 2449 giải thích những gì đã xảy ra.

Trước macOS Sierra, ssh sẽ trình bày một hộp thoại yêu cầu cụm mật khẩu của bạn và sẽ cung cấp tùy chọn để lưu nó vào móc khóa. Giao diện người dùng này đã không còn được sử dụng một thời gian trước đây và đã bị xóa.

Chỉnh sửa: Rõ ràng chỉ định một máy chủ và khóa là không cần thiết. Chỉ cần thêm điều này là đủ.

AddKeysToAgent yes
UseKeychain yes

Đây là những gì làm việc cho tôi. Lúc đầu tôi đã thử ssh-add -K, nhưng thay đổi sẽ chỉ hoạt động cho đến khi tôi khởi động lại.
Gandalf458

Tôi cần phải đặt AddKeysToAgentở cấp cao nhất ~/.ssh/config.
Radon Rosborough

12

Bạn phải nhập cụm mật khẩu cho khóa riêng ở đâu đó và OS X sử dụng ssh-agent theo mặc định.

Nếu bạn muốn sử dụng ssh-agent nhưng muốn tránh hộp thoại gui, bạn có thể sử dụng ssh-add để thêm cụm mật khẩu vào tác nhân và sau đó ssh như bình thường.

Nếu không muốn sử dụng ssh-agent và thay vào đó có dấu nhắc ssh cho cụm mật khẩu, thì hãy bỏ đặt biến môi trường SSH_AUTH_SOCK.


Cảm ơn, Alrescha. Bạn có biết có cách nào để lưu mật khẩu khóa riêng của mình trong khóa Mac OS X vĩnh viễn không (không chỉ trong một phiên)?
titandecoy

3
Bạn có thể thử 'ssh-add -K' trong Terminal, nhưng nếu có lỗi trong đó việc kiểm tra hộp không hoạt động thì điều này cũng có thể không hoạt động. Tôi không muốn mật khẩu ssh của tôi được lưu trữ trong móc khóa vì vậy tôi đã không kiểm tra điều này.
zzz

Với ssh-add -Ktôi không phải nhập mật khẩu để kết nối nhưng lời nhắc vẫn xuất hiện; Tôi chỉ gạt bỏ nó.
titandecoy

3
ssh-add -K là những gì bạn sử dụng để thêm mật khẩu của mình vào móc khóa. Nếu bạn không nhập mật khẩu, nó không thể được đặt vào móc khóa.
zzz

1
phụ lục: Trong cả Lion và Snow Leopard, nếu tôi nhập ssh-add -K, tôi nhận được lời nhắc trong Terminal - không phải hộp thoại.
zzz

8

Khi bạn thư giãn các quyền, khóa sẽ bị bỏ qua. Bạn sẽ không đạt được bất cứ điều gì bằng cách làm điều này.

Nếu bạn muốn sử dụng khóa mà không phải nhập mật khẩu mỗi lần, bạn có hai tùy chọn.

Nếu bạn kiểm tra mật khẩu Ghi nhớ trong móc khóa của tôi, bạn sẽ không phải nhập mật khẩu mỗi lần: nó sẽ được lưu trong móc khóa cùng với tất cả các mật khẩu khác của bạn. Đây là tùy chọn được đề nghị.

Bạn có thể tạo một tệp khóa riêng mà không cần mật khẩu. Bạn có thể thay đổi tệp khóa riêng hiện tại để nó không được bảo vệ bằng mật khẩu (thay đổi mật khẩu chỉ ảnh hưởng đến tệp khóa chứ không ảnh hưởng đến chính khóa). Từ dòng lệnh, chạy ssh -p, nhập cụm mật khẩu hiện có và sau đó để trống cụm mật khẩu mới. Có một rủi ro bảo mật khi có cụm mật khẩu trống: bất kỳ ai có thể truy cập tệp khóa riêng của bạn (ví dụ: bằng cách truy cập vào bản sao lưu của bạn) có thể sử dụng ngay lập tức.


Cảm ơn câu trả lời, mặc dù có một điều tôi quên đề cập - kiểm tra tùy chọn "Ghi nhớ mật khẩu trong móc khóa của tôi" không có tác dụng: hộp thoại xuất hiện lại vào lần tiếp theo tôi kết nối. (Sử dụng cụm mật khẩu trống không phải là một lựa chọn đối với tôi.)
titandecoy

3
Đề xuất thay thế một khóa được bảo vệ bằng mật khẩu bằng một khóa không có mật khẩu thực sự là một ý tưởng khủng khiếp ...
Schmurfy

5

nếu bạn đã thêm khóa riêng vào thư mục nguồn ~ / .ssh và bạn đã nhập ssh-add -K để thêm khóa vào khóa và bạn đã sao chép nội dung khóa chung của mình vào .ssh / ủy quyền_key (cho chính xác tài khoản) tập tin trên máy chủ đích, hộp thoại biến mất.

đó là sự kết hợp phức tạp của các tệp, quyền, vị trí và lệnh để có thể mất thời gian. tôi sẽ không vội kết luận về lỗi.


3

Tôi có chính xác vấn đề tương tự trên Lion (Mac OS X 10.7). Tôi nghĩ là một lỗi ... Nếu xác thực ssh là mật khẩu, khách hàng sẽ truy cập khóa công khai trước tiên là điều bình thường. Tuy nhiên, ngay cả khi bạn chọn lưu cụm mật khẩu trên móc khóa (không bắt buộc phải xác thực mật khẩu) vào lần tới khi kết nối ssh mới được thiết lập, bạn sẽ được hỏi lại cụm mật khẩu ...


1
Tôi cũng coi đây là một lỗi, mọi thứ đều hoạt động tốt với báo tuyết nhưng mỗi khi máy tính của tôi quay lại từ chế độ ngủ, mật khẩu khóa ssh lại được hỏi mặc dù tôi đã kiểm tra "remeber it" lần cuối cùng nó hỏi! Rất khó chịu ...
Schmurfy

3

Không cần phải tạo lại khóa công khai của bạn. Bạn chỉ có thể thực hiện hai lệnh sau:

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

Về cơ bản, bạn cần thắt chặt các quyền trên tệp khóa công khai và bạn cần thêm khóa của mình vào tác nhân xác thực OSX.


3

Trong phiên bản mới nhất của macOS (10.12.2 - Sierra), đây là một sửa chữa dễ dàng. Chỉ cần chỉnh sửa ~ / .ssh / config của bạn và bật tùy chọn UseKeychain:

Host *
UseKeychain yes

Lưu và giải quyết.


2

Sự cố này xảy ra trên hệ thống OS X 10.7.4 của tôi khi ssh-agent bị chết. Một khởi động lại đã khắc phục vấn đề. (Bạn có thể thử khởi động lại ssh-agent, nhưng tôi không biết Keychain có đủ thông minh để chọn ổ cắm ssh-agent mới hay không.)


Đây là những gì vấn đề của tôi đã khắc phục sau khi ném xung quanh trong một giờ.
DanielRe

2
  1. Hãy chắc chắn rằng ~ / .ssh / là chmod 700.

  2. Hãy chắc chắn các tệp ~ / .ssh / id * đều là chmod 600.

  3. Chạy / Ứng dụng / Tiện ích / Keychain Access.app và sửa chữa móc khóa.

  4. Đăng xuất. (Khởi động lại sẽ không phải là một ý tưởng tồi tệ)

  5. Đăng nhập

  6. Nếu sự cố vẫn còn, hãy di chuyển các tệp ~ / .ssh / id * hiện có của bạn sang Bàn làm việc của bạn và thử tạo các khóa mới bằng cách sử dụng ssh-keygen -t dsa -f ~/.ssh/id_dsa -C you@youremail.tldvà xem các phím mới có hoạt động tốt hơn không.

Tôi đang ở trên Lion, nhưng IIrc Snow Leopard hoạt động theo cách tương tự.

ps - bất cứ ai đề nghị sử dụng cụm mật khẩu ssh trống nên bị buộc phải đeo một dấu hiệu để người khác biết không nhận lời khuyên từ họ.


1

Việc tạo lại khóa công khai dường như không hiệu quả đối với tôi (10.8), cũng như không tạo khóa SSH mới. Ví dụ, nếu tôi chạy git pull sau khi khóa móc khóa đăng nhập, một hộp thoại bật lên để yêu cầu mật khẩu vào khóa thay vì trước tiên cố lấy lại mật khẩu từ móc khóa đăng nhập.

Tuy nhiên, nếu tôi giết ssh-agent trước, tôi sẽ được nhắc nhập mật khẩu khóa đăng nhập để lấy mật khẩu khóa SSH.


Xin chào, đây giống như một câu hỏi riêng biệt, thay vì một câu trả lời cho câu hỏi này. Bạn có thể đăng lại như một câu hỏi mới?
Scot

1

Một phát hiện thú vị khác là nếu bạn sao chép và dán nội dung của tệp PEM, bạn có thể có kết thúc thiếu dấu gạch ngang. Vì vậy, chỉ cần nhớ để thêm dòng cuối cùng là,

-----END RSA PRIVATE KEY-----

Một cái gì đó tương tự là khi dán một khóa ssh từ một cái gì đó như Lastpass, nó sẽ dán tất cả trên một dòng. Đây dường như là một vấn đề đối với tôi và một khi chia khóa riêng trên khoảng trắng trở lại định dạng chính xác, nó đã hoạt động.
Cameron Gagnon

1

Tôi đã phải làm các bước sau để làm cho nó hoạt động.

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub git@github.com

Lệnh cuối cùng sẽ xuất ra một cái gì đó như: Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.


0

Tôi đã từng gặp vấn đề tương tự. Tôi dường như đã sửa nó bằng cách làm điều này.

1) Được sao lưu bằng cách đổi tên thành các tệp id_dsa và id_dsa.pub cũ.

2) Chạy một keygen mới với cụm mật khẩu trống.

Hoạt động với công việc thời gian launchctl giám sát một máy chủ từ xa cũng như đăng nhập từ ssh trong một thiết bị đầu cuối.

Tôi có chức năng authme chức năng nhanh trong thiết bị đầu cuối của mình vì tôi có các mục sau trong .bash_profile

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

Vì vậy, một authme remoteserver.com nhanh chóng sẽ sao chép khóa từ xa mới.

Tôi nghĩ rằng lỗi là do một cụm từ mật khẩu không được chuyển đổi (Snow Leopard cũ của tôi hoàn toàn không có).

Hãy thử điều đó và xem nếu nó giúp.

Nó không mất hơn 10 phút để làm. Tôi đã dành thời gian để đi mãi mãi để xem liệu có bất kỳ đề cập nào khác về điều này. Trang web này là duy nhất!

Sở hữu


Thật không may, sử dụng cụm mật khẩu trống không phải là một lựa chọn đối với tôi
titandecoy

0

Tôi đã có một vấn đề tương tự. Hóa ra khóa riêng tôi đang sử dụng có định dạng sai. Tôi đã sử dụng Trình tạo khóa PuTTY trên máy Win của mình và ssh trên OS X mong đợi một định dạng khác - Mở định dạng SSH.

Hóa ra công cụ mà tôi đã sử dụng để tạo khóa này (Trình tạo khóa PuTTY) có một tùy chọn để chuyển đổi khóa riêng của tôi sang định dạng theo yêu cầu của Open SSH.

Đơn giản như:

  1. Mở khóa PuTTY
  2. Nạp khóa riêng của bạn
  3. Chọn Chuyển đổi> Xuất khóa OpenSSH.

Tệp bạn sẽ lưu chứa khóa riêng ban đầu của bạn ở định dạng (OpenSSH) thích hợp.


0

Làm ơn hãy chắc chắn điều đó:

  1. Bạn đang sử dụng định dạng pem cho khóa riêng của bạn. Điều này là do Mac sử dụng máy khách openssh hoạt động với pem. ppk là định dạng độc quyền của putty và không tương thích với openssh. Bạn có thể dễ dàng chuyển đổi ppk sang pem bằng putty keygen, trong trường hợp bạn chỉ có ppk.
  2. Các quyền trên tệp pem của bạn là 600. Các khóa riêng chỉ có thể được truy cập bởi chủ sở hữu của chúng. Vì vậy, nếu các quyền cho phép truy cập đọc vào bất kỳ ai khác, nó sẽ được coi là mối đe dọa bảo mật.

Điều này hy vọng sẽ giải quyết vấn đề.


-1

Sử dụng khóa .pem thay vì phím .ppk.


1
Chúng tôi đang tìm kiếm câu trả lời dài cung cấp một số giải thích và bối cảnh. Đừng chỉ đưa ra một câu trả lời một dòng; giải thích tại sao câu trả lời của bạn là đúng, lý tưởng với trích dẫn. Câu trả lời không bao gồm giải thích có thể được gỡ bỏ.
Tetsujin
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.