web-dev-qa-db-ja.com

chroot、gpg-agent、およびUbuntu 18.04

サーバーへのSFTPアクセス用に、chrootによって作業ディレクトリに制限されているsftpユーザーを作成しました。

Match User sftp-user
    AuthorizedKeysFile /home/sftp-user/.ssh/authorized_keys
    ChrootDirectory /var/www/domain
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

そして、/etc/passwdのこのエントリ

sftp-user:x:1003:1003::/html:/usr/sbin/nologin

キーファイルにいくつかの問題がありましたが、そのための絶対パスを設定すると問題が解決しました。 SFTPログインは、nagiosサーバーモニタリングがサーバー(VPS)にインストールされるか、更新が実行され、システムが再起動されるまで、正常に機能しました。

これで、接続が失敗し、syslogに次のエラーが表示されます。

systemd[7590]: gpgconf: running /usr/bin/gpg-agent failed (exitcode=2): General error
systemd[7590]: gpgconf: fatal error (exit status 1)

このエラーは、ログインがキーファイルまたはパスワードを介して行われたかどうかに関係なく発生します。だから私は質問に従うことを試みました gpg-agentはエージェントが存在すると言いますが、gpgはエージェントが存在しないと言いますか? 問題を絞り込むために。

$ gpg-agent --version
gpg-agent (GnuPG) 2.2.4
libgcrypt 1.8.1

gpg-agentをユーザー(sftpユーザーではない)として起動すると、最初の実行時にホームディレクトリにファイルが作成されます。

$ gpg -d demo-file.asc
gpg: keybox '/home/username/.gnupg/pubring.kbx' created

/etc/ssh/sshd_configchrootを無効にすると、ログインが正しく機能します。したがって、chrootセッションで一部のアクセスが失敗したと想定します。 sftpユーザーはシェルの使用を許可されていないため、sftpユーザーのホームディレクトリにディレクトリをbindしませんでした。

1
BurninLeo

作成できなかったのは実際には.gnupgディレクトリでした。 /etc/passwd/html)で指定されたホームディレクトリは、SFTPセッション中は相対的ですが、ログイン中は絶対パスとして理解されます。したがって...

  • Chroot + home = .gnupgにフォルダ/var/www/domain/htmlを作成しても(!)役に立ちませんでした。
  • フォルダ/html/.gnupg(sftp-userが所有する.gnupg)を作成すると、/syslogからエラーメッセージが削除されました。

さらなる問題に対処するために(もちろん、すぐには機能しませんでした)、別のsshdデーモンを冗長モードで起動し、このポートに接続しました....しかし、それはここでのトピックにつながります。

Sudo /usr/sbin/sshd -d -p 3321
1
BurninLeo