66402
Windows Server 2012R2にOpenSSHサーバをインストールしました。  
しかし、公開鍵認証がうまくいかず、毎回パスワードを聞かれてしまいます。  
なお、クライアントはWindows 10です。

いろんなサイトを見て、何度も試しましたがうまくいきません。  
公開鍵・秘密鍵を何度も作り直しましたが・・・どういった設定が必要なのか  
教えていただけますでしょうか？

1) 通常のSSHアクセスは問題なくできる。  
下記を実行して、パスワードを入力するとSSH画面に切り替わる。

```

    $ssh administrator@server
    
```

2) サーバ側のssh-agentサービス、sshdサービスは両方とも稼働している。  
3) クライアント側のssh-agentサービスも稼働している。  
4) クライアント側で下記のコマンドを実行し、公開鍵と秘密鍵を作成。

```

    $ssh-keygen -t rsa
    
```

5)
サーバ側はadministratorなので、クライアントで作った公開鍵を「C:\ProgramData\ssh」フォルダに「administrators_authorized_keys」にリネームして保存。

6) クライアント側は下記のコマンドを実行して、秘密鍵を登録。

```

    $eval `ssh-agent`
    $ssh-add id_rsa
    
```

7) サーバ側を再起動

8) サーバにsshでアクセス  
⇒ やはりパスワードを聞いてくる。

[![サーバアクセス](https://i.stack.imgur.com/Av133.png)](https://i.stack.imgur.com/Av133.png)

以下 `ssh -v` を実行した結果になります。  
サーバは{server}、ユーザーは{user}としております。

```

     $ ssh -v administrator@{server}
    OpenSSH_8.1p1, OpenSSL 1.1.1d  10 Sep 2019
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: Connecting to {server} [10.123.12.212] port 22.
    debug1: Connection established.
    debug1: identity file /c/Users/{user}/.ssh/id_rsa type 0
    debug1: identity file /c/Users/{user}/.ssh/id_rsa-cert type -1
    debug1: identity file /c/Users/{user}/.ssh/id_dsa type -1
    debug1: identity file /c/Users/{user}/.ssh/id_dsa-cert type -1
    debug1: identity file /c/Users/{user}/.ssh/id_ecdsa type -1
    debug1: identity file /c/Users/{user}/.ssh/id_ecdsa-cert type -1
    debug1: identity file /c/Users/{user}/.ssh/id_ed25519 type -1
    debug1: identity file /c/Users/{user}/.ssh/id_ed25519-cert type -1
    debug1: identity file /c/Users/{user}/.ssh/id_xmss type -1
    debug1: identity file /c/Users/{user}/.ssh/id_xmss-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_8.1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_for_Windows_8.1
    debug1: match: OpenSSH_for_Windows_8.1 pat OpenSSH* compat 0x04000000
    debug1: Authenticating to {server}:22 as 'administrator'
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: algorithm: curve25519-sha256
    debug1: kex: host key algorithm: ecdsa-sha2-nistp256
    debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: ecdsa-sha2-nistp256 SHA256:zFLJ6u5M7eGbURhLEIRruUZHQcIFuBx0F6nDLBacz5k
    debug1: Host '{server}' is known and matches the ECDSA host key.
    debug1: Found key in /c/Users/{user}/.ssh/known_hosts:1
    debug1: rekey out after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: rekey in after 134217728 blocks
    debug1: Will attempt key: /c/Users/{user}/.ssh/id_rsa RSA SHA256:lWkAW3gm3OZM5dcG9KQRxUPRQ+YPqq8BKObjsPeTe9k
    debug1: Will attempt key: /c/Users/{user}/.ssh/id_dsa
    debug1: Will attempt key: /c/Users/{user}/.ssh/id_ecdsa
    debug1: Will attempt key: /c/Users/{user}/.ssh/id_ed25519
    debug1: Will attempt key: /c/Users/{user}/.ssh/id_xmss
    debug1: SSH2_MSG_EXT_INFO received
    debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey,password,keyboard-interactive
    debug1: Next authentication method: publickey
    debug1: Offering public key: /c/Users/{user}/.ssh/id_rsa RSA SHA256:lWkAW3gm3OZM5dcG9KQRxUPRQ+YPqq8BKObjsPeTe9k
    debug1: Authentications that can continue: publickey,password,keyboard-interactive
    debug1: Trying private key: /c/Users/{user}/.ssh/id_dsa
    debug1: Trying private key: /c/Users/{user}/.ssh/id_ecdsa
    debug1: Trying private key: /c/Users/{user}/.ssh/id_ed25519
    debug1: Trying private key: /c/Users/{user}/.ssh/id_xmss
    debug1: Next authentication method: keyboard-interactive
    debug1: Authentications that can continue: publickey,password,keyboard-interactive
    debug1: Next authentication method: password
    administrator@{server}'s password:
    
```

2020.5.8追記  
ladle様に教えていただいた記事を参考に、公開鍵のパーミッションを設定したところうまくいきました。ありがとうございました。
CC BY-SA 4.0
2020-05-07T05:35:17.420
66374
2020-05-08T04:27:04.030
2020-05-08T04:27:04.030
19110
40029
question
openssh
OpenSSHで公開鍵認証ができない。
マイクロソフト社移植版OpenSSH(Win32-OpenSSH)を利用しているのであれば(他の移植版とは異なり)ファイルパーミッションを厳密に見ており、設定がおかしいと期待通り動作しない場合が多々あります。

次のリンク先に説明がありますが、修正用のスクリプトが同梱されています。

  * <https://github.com/PowerShell/Win32-OpenSSH/wiki/OpenSSH-utility-scripts-to-fix-file-permissions>

> Improper file permissions will likely result in a broken configuration
> (OpenSSH fails to work). You may use the following scripts (provided in
> release payload) to help evaluate and fix any permission related issues.
CC BY-SA 4.0
2020-05-08T00:15:39.983
66402
2020-05-08T00:15:39.983
2808
66374
answer