Windows SSH: Quyền cho 'khóa riêng' quá mở


78

Tôi đã cài đặt OpenSSH 7.6 trong Windows 7 cho mục đích thử nghiệm. Máy khách và máy chủ SSH hoạt động tốt cho đến khi tôi cố truy cập vào một trong các hộp AWS EC2 của mình từ cửa sổ này.

Có vẻ như tôi cần thay đổi quyền trên tệp khóa riêng. Điều này có thể dễ dàng thực hiện trên unix / linux bằng chmodlệnh.

Còn cửa sổ thì sao?

private-key.ppm được sao chép trực tiếp từ AWS và tôi đoán cũng được phép.

C:\>ssh -V
OpenSSH_7.6p1, LibreSSL 2.5.3

C:\>ver

Microsoft Windows [Version 6.1.7601]

C:\>


C:\>ssh ubuntu@192.168.0.1 -i private-key.ppk
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'private-key.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "private-key.ppk": bad permissions
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>
C:\>
C:\>ssh ubuntu@192.168.0.1 -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>

Bạn đã thử sửa đổi ACL chưa?
Ignacio Vazquez-Abrams

1
Khóa riêng của bạn có thực sự nằm trong đường dẫn gốc C: \ không? Tôi có thể thấy lý do tại sao mọi người phàn nàn vì mọi thứ trong C: \ đều có thể truy cập được. Bạn đã thử di chuyển nó vào một thư mục mà chỉ người dùng của bạn mới có quyền truy cập (ví dụ: C: \ Users \ username \ desktop) và xem tin nhắn đó có còn xuất hiện không?
Darius

@Darius, đúng vậy. Khi bạn sao chép một tập tin từ unix / linux sang windows, quyền cũng được sao chép. Tôi cần thay đổi điều này nhưng không chắc chắn làm thế nào để làm điều đó trên windows. Điều này có thể dễ dàng thực hiện trên unix / linux với lệnh chmod.
Sabrina

@ IgnacioVazquez-Abrams, ACL? Loại ACL nào?
Sabrina

1
@Sabrina Hoặc bạn sử dụng lệnh icacls để thay đổi quyền hoặc chỉ cần nhấp chuột phải vào Khóa riêng và chọn Thuộc tính và kiểm tra trong tab "Bảo mật". Và hãy chắc chắn rằng bạn / bất cứ ai được cho là có thể truy cập khóa riêng. Nếu "Người dùng" có quyền truy cập đọc - có nghĩa là bất kỳ ai có quyền truy cập vào hệ thống đều có thể đọc khóa riêng đó.
Darius

Câu trả lời:


94

Bạn định vị tệp trong Windows Explorer, nhấp chuột phải vào tệp rồi chọn "Thuộc tính". Điều hướng đến tab "Bảo mật" và nhấp vào "Nâng cao".

Thay đổi chủ sở hữu thành bạn, vô hiệu hóa quyền thừa kế và xóa tất cả các quyền. Sau đó cấp cho mình "Toàn quyền kiểm soát" và lưu các quyền. Bây giờ SSH sẽ không phàn nàn về việc cấp phép tệp quá mở nữa.

Nó sẽ trông giống như thế này:

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


2
Tôi chỉ muốn thêm 1) Phương thức này hoạt động trên 10.0.17134.191hộp Windows 10 ( ) của tôi w / Cygwin ver CYGWIN_NT-10.0-WOW 2.3.1(0.291/5/3) 2015-11-14 12:42và ssh ver OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.42) Cảm ơn! @iBug!
atreyu

NẾU tệp chính nằm trên Thumb Drive / Flash đĩa, tab Bảo mật đó không khả dụng!
Dylan B

@DylanB Tại sao bạn lại đặt thông tin đăng nhập vào ổ đĩa di động? (Trên thực tế, tab đó chỉ khả dụng trên các hệ thống tệp NTFS - bạn có thể định dạng ổ đĩa của mình thành NTFS một cách dễ dàng).
iBug

10
Trên thực tế, tôi đã làm điều đó và nó vẫn phàn nàn rằng 0777 quyền quá mở.
Aaron Bramson

9
Tại sao điều này rất khó khăn trên windows, ai đó có thể chỉ cần thêm tùy chọn lệnh --ignore-ngu ngốc-quy tắc?
Liam Mitchell

17

Các khóa chỉ phải có thể truy cập được đối với người dùng mà họ dự định và không có tài khoản, dịch vụ hoặc nhóm nào khác.

  • GUI:
    • [Tệp] Thuộc tính - Bảo mật - Nâng cao
      1. Đặt chủ sở hữu cho người dùng của khóa
      2. Xóa tất cả người dùng, nhóm và dịch vụ, ngoại trừ người dùng của khóa , trong Mục nhập quyền
      3. Đặt người dùng của khóa thành Kiểm soát hoàn toàn


  • CLI:

    :: Set Variable ::
    set key="C:\Path\to\key"
    
    :: Remove Inheritance ::
    cmd /c icacls %key% /c /t /inheritance:d
    
    :: Set Ownership to Owner ::
    cmd /c icacls %key% /c /t /grant %username%:F
    
    :: Remove All Users, except for Owner ::
    cmd /c icacls %key%  /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
    
    :: Verify ::
    cmd /c icacls %key%

Nếu chủ sở hữu thực sự là một nhóm thì sao? Trong trường hợp của tôi, tôi có một tệp thuộc sở hữu của network serviceCygwin nghĩ rằng sự cho phép là 0770 thay vì 0700.
gian

Một tập tin phải được sở hữu bởi người dùng và một nhóm, không chỉ một nhóm.
Quyền của

Đó là trường hợp của Unix. Trong Windows, network servicecó thể sở hữu một tệp và đó là một nhóm
gian

Cygwin cho phép chức năng API POSIX trên Windows, nhưng nó vẫn hoạt động theo các quy tắc của các chương trình dựa trên UNIX gốc (do đó cấp phép 3 & 4 bát phân trong thiết lập UGO). Mặc dù bạn có thể mở một sự cố trên GitHub của Microsoft Win32-OpenSSH, vì các khóa SSH phải là nhóm và những người khác không thể truy cập , có quyền sở hữu theo cách bạn mô tả có thể không được hỗ trợ. Tốt hơn là tuân thủ định mức của chương trình hơn là cố gắng định cấu hình chương trình theo cách [có thể] không được hỗ trợ.
JW0914

1
đây phải là câu trả lời đúng Cảm ơn các lựa chọn CLI. GUI luôn hút trong trường hợp windows.
shyammakwana.me

7

Ngoài câu trả lời được cung cấp bởi ibug. Vì tôi đang sử dụng hệ thống Ubuntu bên trong windows để chạy lệnh ssh. Nó vẫn không hoạt động. Tôi cũng vậy

sudo ssh ...

và sau đó nó hoạt động


sudokhông nên được sử dụng để mở phiên SSH vì đó là rủi ro bảo mật. Thời gian duy nhất (ít nhất là tôi biết) tài khoản root nên được sử dụng để mở phiên SSH là trên các hệ thống người dùng đơn (thường được tìm thấy trên [OpenWrt, DD-WRT, v.v.) và các hệ thống nhúng khác ) . Khóa SSH phải có thể truy cập chỉ cho người sử dụng chúng cho và không có khác tài khoản, dịch vụ hoặc nhóm.
JW0914

4

Tôi gặp vấn đề tương tự và dường như nó có liên quan đến phiên bản SSH bạn đang chạy.

Nếu tôi gõ

where ssh

Tôi có...

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe

Khi tôi chạy ssh -Vở cả hai địa điểm, tôi nhận được

OpenSSH_7.5p1, without OpenSSL
OpenSSH_7.3p1, OpenSSL 1.0.2k  26 Jan 2017

...tương ứng

Vì vậy, khi tôi chạy sshtừ thư mục git / bin, nó hoạt động tốt và không phàn nàn về các quyền, nhưng chạy cùng một dòng lệnh, sử dụng cài đặt SSH trước đây, nó sẽ quay trở lại với điều này.

Load key "t:\\mykeys\\rich-private.ppk": invalid format
banana@127.0.0.127: Permission denied (publickey).

ps. các quyền trên tệp chỉ là quyền truy cập đầy đủ cho bản thân tôi và không có gì khác.


OpenSSH không nên được cài đặt vào thư mục Windows vì nhiều lý do, từ bảo mật, đến sự bất tiện lớn, người ta cần sửa một thư mục Windows bị hỏng thông qua DISMhoặc sử dụng tùy chọn Reset (đã được cải thiện để sử dụng thư mục WinSxS so với trở lại ban đầu install.esd) .
JW0914

Đây là điều đã giúp tôi, tôi chưa bao giờ có phiên bản windows ssh hoạt động trong kịch bản này, chỉ có Git :(
cudacoder

Đây cũng là bản sửa lỗi cho tôi. Có vẻ như Windows 10 Pro bây giờ gói một phiên bản mở của pooched. Tôi đã buộc phải xóa thư mục C: \ Windows \ System32 \ OpenSSH và thêm ssh.exe của git vào PATH.
Shukri Adams

3

Bạn cần jsut 2 điều:

1) Vô hiệu hóa thừa kế nhập mô tả hình ảnh ở đây

2) Chuyển đổi quyền được kế thừa sang quyền rõ ràng nhập mô tả hình ảnh ở đây

3) Xóa nhóm người dùng nhập mô tả hình ảnh ở đây

4) Bạn sẽ không có người dùng nào có thể truy cập các tệp riêng tư, điều này là đủ để thêm id_rsa. nhập mô tả hình ảnh ở đây


1

Bạn có thể sử dụng icacls trong windows thay vì chmod để điều chỉnh quyền của tập tin. Để cung cấp cho người dùng hiện tại quyền đọc và loại bỏ mọi thứ khác,

icacls <file name> /inheritance:r
icacls <file name> /grant:r "%username%":"(R)"

1

Tôi gặp vấn đề tương tự nhưng tôi đang làm việc và không có khả năng thay đổi quyền truy cập tệp trên máy tính làm việc của mình. Những gì bạn cần làm là cài đặt WSL sau đó sao chép khóa của bạn vào thư mục ssh ẩn trong WSL:

cp <path to your key> ~/.ssh/<name of your key>

Bây giờ bạn sẽ có thể sửa đổi các quyền bình thường.

sudo chmod 600 ~/.ssh/<your key's name>

Sau đó ssh sử dụng WSL:

ssh -i ~/.ssh/<name of your key> <username>@<ip address>


-1

Trả lời bởi iBug hoạt động tốt! Bạn có thể làm theo và thoát khỏi vấn đề này.

Nhưng có một vài điều cần phải được xóa khi tôi gặp vấn đề trong khi thiết lập quyền và tôi mất vài phút để tìm ra vấn đề!

Theo câu trả lời của iBug, bạn sẽ xóa tất cả các quyền nhưng làm cách nào để bạn đặt quyền Kiểm soát hoàn toàn cho chính mình? đó là nơi tôi bị mắc kẹt lúc đầu vì tôi không biết làm thế nào.

Sau khi vô hiệu hóa quyền thừa kế, bạn sẽ có thể xóa tất cả người dùng hoặc nhóm được phép.

Sau khi hoàn thành,

Nhấp chuột vào Addsau đó bấm vào Set a Principalsau đó nhập SystemAdministratorsyour email addreddtrong lĩnh vực ở phía dưới sau đó bấm vào check names.

Nó sẽ tải tên nếu người dùng tồn tại. Sau đó, Nhấp vào OK> Loại Allow> Giấy phép cơ bản Full Control>Okay

Điều này sẽ thiết lập quyền Kiểm soát hoàn toàn cho HỆ THỐNG, Quản trị viên và Người dùng của bạn.

Sau đó cố gắng ssh bằng phím đó. Nó sẽ được giải quyết ngay bây giờ.

Tôi đã có vấn đề tương tự và tôi đã giải quyết bằng cách sử dụng phương pháp này. Nếu có bất kỳ người dùng hoặc nhóm nào có tên đó thì nó sẽ tải nó.

Ảnh chụp màn hình-

Mục nhập quyền Chọn hiệu trưởng / Chọn người dùng hoặc nhóm

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.