サーバーへの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_config
でchroot
を無効にすると、ログインが正しく機能します。したがって、chrootセッションで一部のアクセスが失敗したと想定します。 sftpユーザーはシェルの使用を許可されていないため、sftpユーザーのホームディレクトリにディレクトリをbind
しませんでした。
作成できなかったのは実際には.gnupg
ディレクトリでした。 /etc/passwd
(/html
)で指定されたホームディレクトリは、SFTPセッション中は相対的ですが、ログイン中は絶対パスとして理解されます。したがって...
.gnupg
にフォルダ/var/www/domain/html
を作成しても(!)役に立ちませんでした。/html/.gnupg
(sftp-userが所有する.gnupg
)を作成すると、/syslog
からエラーメッセージが削除されました。さらなる問題に対処するために(もちろん、すぐには機能しませんでした)、別のsshd
デーモンを冗長モードで起動し、このポートに接続しました....しかし、それはここでのトピックにつながります。
Sudo /usr/sbin/sshd -d -p 3321