web-dev-qa-db-ja.com

Linuxサーバーでrsync / scp / sftpを許可しますが、ターミナルログインは許可しません

Rsync/scp/sftpを介してファイルをアップロード/ダウンロードできるようにユーザーをセットアップできるようにLinuxボックス(おそらくUbuntuサーバー)を構成したいのですが、マシンにsshを実行できないようにする必要がありますインタラクティブな端末を入手します。

これは可能ですか?それを構成するにはどうすればよいですか? rsync/scp/sftpが機能するためには、sshサーバーをオンにする必要があることはすべてわかっていますが、直接ログインを防ぐ方法があるはずです。

7
Eldamir

ユーザーのシェルを rssh に設定します。マンページから:

rssh-scpおよび/またはsftpのみを許可する制限付きのセキュアシェル

6
SlightlyCuban

Rsyncのみを許可する必要がある場合、rsyncの開発者は問題を解決するためにrrsyncスクリプトを提供します。ここから入手できます: http://ftp.samba.org/pub/unpacked/rsync/support/rrsync

.authorized_keysファイルにこのようなものを追加する必要があります。この例では、-roへの読み取り専用(/some/directory/)アクセスを許可します。

command="/path/to/rrsync -ro /some/directory/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...

説明と例の詳細については、こちらをご覧ください: https://www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/

更新:このバグが修正されるまで、これは書き込みアクセスに対して安全ではありません: https://bugzilla.samba.org/show_bug.cgi?id=11879

このバグが続く限り、読み取り専用モード(-ro)でのみrrsyncを使用してください。

3
user144437

scponly のような疑似シェルを使用して、直接ログインしたくないユーザーにこれを設定できます。

別の可能な方法は、許可されたキーファイルにログインコマンドを設定することですが、これは、ユーザーがパスワードではなくSSHキーを介してログインする場合にのみ機能します。

1
Izzy