sshdがユーザーグループのログインシェルを覆うことを許可する

sshdがユーザーグループのログインシェルを覆うことを許可する

私のユーザーは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-serverForceCommandSSH_ORIGINAL_COMMANDrsshForceCommand

関連:


代わりに、ラッパースクリプトを使用してログインシェルの代わりに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動作します。

おすすめ記事