SSH ユーザーをホーム フォルダーに chroot すると接続が拒否される

SSH ユーザーをホーム フォルダーに chroot すると接続が拒否される

私は誰かに(Ubuntu 14.04)サーバへのSSHアクセスを許可しようとしていますが、アクセスを自分のホームフォルダに制限したいです。そこで、私は次のことを試しています。このチュートリアル

sudo adduser jailuserまず、jailuser を使用してログインできるユーザー ( ) を作成しました。次に、ユーザーを jail にしようとして、以下を追加しました/etc/ssh/sshd_config(ssh を再起動しました)。

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

次に、グループ sftp を作成しました。

sudo groupadd sftp

次のコマンドを実行して jailuser を変更しました。

sudo usermod -G sftp jailuser
sudo usermod -s /bin/false jailuser
sudo chown root:root /home/jailuser
sudo chmod 0755 /home/jailuser

その結果、ログインできなくなりましたssh: connect to host xx.xxx.xx.223 port 22: Connection refused

私はサーバー管理の初心者なので、ここで困惑しています。私が何を間違っているのか知っている人はいませんか? すべてのヒントやコツを歓迎します!

答え1

私もこの問題に遭遇しましたが、修正方法は「Subsystem sftp internal-sftp」スタンザの上に「UsePAM yes」を置くことでした。ssh を再起動すると、すぐに機能しました。

答え2

あなたが投稿した行に明らかに問題があるようには思えませんsshd_config。ここでは 3 つの可能性があるようです:

  1. 特に問題はないのですが、sshd始める必要があります。
  2. sshd実行はできますが、正しい IP アドレスまたはポートをリッスンしていません。
  3. 何かがsshd起動を妨げています。

以下のすべての操作を行うには、rootssh サーバー ホスト上にいる必要があります。

(1) については、「ps -fe | grep sshd」などを実行して、実行されているかどうかを確認しますsshd。実行されていない場合は、ssh サーバーを起動してみてください。Ubuntu では、次のコマンドを実行します。

/etc/init.d/ssh restart

が起動している場合は( 2 sshd)に進みます。sshd_configリスンアドレスまたはポートディレクティブ。これらは、サーバーが接続をリッスンする IP アドレスとポートを制御します。ほとんどの場合、これらをコメントアウトしたままにするか (デフォルト値を使用するため)、それぞれ 0.0.0.0 と 22 に設定します。

起動しようsshdとしたが実行できない場合は、まず のログ ファイルで/var/logからのメッセージを確認してsshdください。そこには、どのような問題が発生しているかが示されている可能性があります。それでも問題が解決しない場合は、sshdデバッグしながら対話的に実行できます。

/usr/sbin/sshd -ddd            # Listen on the default port 22
/usr/sbin/sshd -ddd -p 1022    # Listen on port 1022

sshd端末に接続したまま、デバッグ情報を大量に出力します。何らかの理由で実行を継続できない場合は、その理由が通知されます。

関連情報