У меня есть некоторые Linux, установленные на ноутбуке, и я использую SSH с аутентификацией с помощью личного ключа для подключения к серверу Недавно я установил Win10 с расширением bash для разработчиков на рабочем столе. Так как у меня есть только одна учетная запись пользователя на этом сервере, и, следовательно, только по ключу, я просто переместил файл с закрытым ключом в соответствующий каталог моей Windows bash.

Однако всякий раз, когда я открываю новый экземпляр bash и пытаюсь подключиться к серверу, появляется сообщение об ошибке: «Отказано в доступе (publickey)». возвращается Мое текущее исправление состоит из следующих шагов: exec ssh-agent bash; SSH-добавить;

Хотя я, очевидно, мог бы добавить это в .profile, мне нужно будет вводить фразу-пароль всякий раз, когда я открываю bash.

Есть ли у кого-нибудь какие-нибудь предложения, как исправить это более правильно, если бы я только вводил пароль, когда я подключаюсь к серверу, и мне не нужно повторно инициализировать мой ключ ssh в каждом сеансе bash.

С уважением

1 ответ1

0

Ключи должны быть доступны только тому пользователю, для которого они предназначены, и никаким другим аккаунтам, сервисам или группам.

  • Я не использую WSL, так как это кошмар безопасности, создающий больше проблем, чем решает, поэтому я предоставлю оба способа установить правильные разрешения


Windows Powershell Terminal


  • GUI:
    • Свойства [Файл] - Безопасность - Дополнительно
      1. Установить владельца на пользователя ключа
      2. Удалите всех пользователей, группы и службы, кроме пользователя ключа, в разделе Записи разрешений
      3. Установите для пользователя ключа полный доступ


  • 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 BUILTIN\Administrators BUILTIN Everyone System Users
    
    :: Verify ::
    cmd /c icacls %key%
    


WSL Bash Terminal


  • CLI

    # Set Variables
    
      # Key  
        key="/path/to/key"
    
      # User:
        user="$(echo $USER)"
    
    # Set Ownership
      # This assumes user's name is also user's group name
        chown $user:$user $key
    
    # Set Access Rights
      chmod 0600 $key
    
    # Verify
    ls -l $key
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .