Centos 7 サーバーのプライベート ネットワークがあります。各サーバーには SSH 要塞経由でのみアクセスできます。さらに、これらのサーバーはすべて SSSD を使用して、SSH ユーザーのキーを LDAP ディレクトリに対して認証します。
キーは LDAP ディレクトリに対して認証されるため、標準ファイルはありませんauthorized_keys
。標準authorized_keys
ファイルの代わりに、バイナリは/usr/bin/sss_ssh_authorizedkeys
LDAP に対するクエリをファイルsshd
としてフォーマットされたファイルにパイプしますauthorized_keys
が、実際にはファイルではありません。したがって、RSA キーをエントリにバインドしてユーザーを特定のコマンドに制限することはcommands=" ... "
、私の知る限り不可能です。
SSH ユーザーは、次のコマンドを使用して、要塞を介してワークステーションに認証できます。
ssh -A -l [email protected] joes.workstation.ip -o ProxyCommand="ssh -l [email protected] -q bastion.ip nc joes.workstation.ip %p"
残念ながら、彼らは要塞サーバー上のセッションに SSH で接続することもできますが、これは許可してほしくありません。
現在のツール(SSSD、SSHD、LDAPディレクトリ)を使用してSSHユーザーが要塞を通過できるようにする方法はあるでしょうか?の中へ要塞?
答え1
sssd
この問題に遭遇したとき、グループごとに構成を設定できる のバージョンはまだ開発中でした。
最終的に、ディレクティブの下にForceCommand
エントリとディレクティブを追加しました。sshd_config
Match
AcceptEnv
Match Group [email protected]
AcceptEnv SomeVariable
AcceptEnv SomeOtherVariable
ForceCommand /path/to/some/script/I/wrote
次に、シェル スクリプトで、ssh クライアントから渡された変数を使用して何らかのアクションを実行します。
たとえば、クライアントが次のように呼び出した場合:
$ SomeVariable=foo ssh -i path/to/key -l [email protected] -o SendEnv=SomeVariable bastion.server
スクリプトは環境変数にアクセスしますSomeVariable
。任意の言語を使用して環境変数にアクセスし、それを使用して何らかのアクションを実行します。
スクリプトが要塞上のシェル セッションに終了しないように注意してください。