私のユーザーはLDAPを介して複数のコンピュータで共有されます。
~のため一つこれらのマシン(「fileserf」と呼びます)を制限したいと思います。一部ユーザーができること(実際にはSSHを介して対話型セッションにログインするのを防ぐ)優れたその他マシンでは、これらのユーザーはSSHを正常に使用できる必要があります。
internal-sftp
だから私の初期のアイデアは、このサブシステムを次のように使用することでした。
Match group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
sftponly
これは単一ホスト上の(ローカル)グループのメンバーシップのみを制限するのでうまく機能しますfileserf
が、残念ながらinternal-sftp
サブシステムはただ許可sftp
および許可されていないscp
(またはrsync
)。
だから私はもう少し調査し、rssh
これが私が望むものを正確にできるようにすることを発見しました(権限の面で)。
これで問題は、LDAPでこれらのユーザーのログインシェルを設定できないことです。/usr/bin/rssh
これは、そのユーザーが制限されるという意味だからです。みんなfileserf
.
だから私の考えは、fileserfのいくつかの設定を介してログインシェルをオーバーライドすることですsshd_config
。
Match group sftponly
X11Forwarding no
AllowTcpForwarding no
ForceCommand /usr/bin/rssh
残念ながら、これはあなたがコンピュータに入ろConnection closed
うとするたびに次のことsftp
を受け取るので、うまくいかないようです。
$ ssh user@fileserf
This account is restricted by rssh.
Allowed commands: scp sftp
If you believe this is in error, please contact your system administrator.
Connection to fileserf closed.
$ sftp user@fileserf
Connection closed
$
とどのようにForceCommand
協力できますかrssh
?
または、sshd
ユーザーグループのログインシェルを上書きするように構成するにはどうすればよいですか?
ベストアンサー1
これrssh
マンページ次のユーザーのログインシェルであることを示します。
The system administrator should install the shell on the restricted
system. Then the password file entry of any user for whom it is
desireable to provide restricted access should be edited, such that
their shell is rssh. For example:
luser:x:666:666::/home/luser:/usr/bin/rssh
を使用すると、そのForceCommand
コマンドのみが実行されます。コマンドはscp
、または(sftp
それぞれ)を実行するときにSSHによって実行されますが、もちろん実行プログラムでそれを使用しないと実行できません。したがって、そのタスクを実行するには。scp
/usr/lib/openssh/sftp-server
ForceCommand
SSH_ORIGINAL_COMMAND
rssh
ForceCommand
関連:
代わりに、ラッパースクリプトを使用してログインシェルの代わりにrssh
コマンドを実行できます。たとえば、
/usr/local/bin/wrapper-shell
:
#! /bin/sh
rssh -c "$SSH_ORIGINAL_COMMAND"
そして/etc/ssh/sshd_config
:
Match group sftponly
X11Forwarding no
AllowTcpForwarding no
ForceCommand /usr/local/bin/wrapper-shell
実行可能ファイルがある場合は/usr/local/bin/wrapper-shell
動作します。