web-dev-qa-db-ja.com

SSHユーザーを別のSSHログインにリダイレクトするにはどうすればよいですか?

SSHサーバーにアクセスする必要がある人がいますが、プログラムへのアクセスを制限したいです。彼らが使用する必要があるのは、別のサーバーにログインするためのsshです。私のサーバーは、別のサーバーへのアクセスポイントです。このユーザーに、他のネットワークで取得するために必要なsshプログラム以外のプログラムを実行させたくありません。

理想的には、ユーザーがログインすると、別のSSHログインにリダイレクトされ、他に何かを行うためのその他の即時オプションはありません。

Rootユーザー権限を持つSSHユーザーはいません。

これをどのように設定できますか?私は彼らのbashrcファイルでそれができると考えています。ログイン時に実行するセカンダリログインスクリプトを作成します。ユーザーがSSHサーバーにログインし、ログイン時にbashrcファイルを無視する方法はありますか?考慮すべきより良い方法はありますか?

5
j0h

sshd_configForceCommandディレクティブを使用することを検討してください。たとえば、 これら を使用して、ユーザーのgroupsを一連のサーバーに強制します。

Match Group group1
       ForceCommand ssh -t group1.fqdn

Match Group="*,!local,!group2,!root"
       ForceCommand ssh -t group3.fqdn

次を使用できます。

Match User foo
    ForceCommand ssh -t target-Host
11
muru

Bashrcファイルを編集することを考えました。この方法でssh以外のすべてのbashコマンドへのアクセスを制限することを検討します。この link には良い情報があります。

別の考えは、ログインにアクセスせずにsshパススルートンネルをセットアップすることです。これは link も有用かもしれません。これは設定が簡単な場合があります。

2
Carl Trask

ユーザーのログインシェルを、2番目のエンドポイントへのssh構文を含むbashまたはshではなく、シェルスクリプトに設定するだけです。すべてのログインは、ssh構文で-sを使用してシェルを明示的に定義しない限り、要求どおりにリダイレクトします。

さまざまな方法でBASHRCの制限から抜け出すことができます。悪意があると思われる場合は、ログイン時に代替シェルを指定できないようにしてください。

できないようにユーザーsigintをトラップします Ctrl + C sshの終了時に終了コード0をチェックしてください。そうでない場合は完全に終了するか、無期限に再試行してください。あなたの選択。

2
Abyzl

ユーザーにProxyCommandをローカルで使用するように強制することにより、ユーザーのサーバーをSSH bastion Host として扱うことで、これをある程度透過的に行うことができます。

サーバー(要塞)で、sshd_configで次のようにncにユーザーを制限します。

Match User restricted_usr
  ForceCommand nc -w 600 restricted_usr_vm 22

~/.ssh/configのクライアント(OpenSSHと仮定):

Host myserver
  ProxyCommand ssh bastion nc -w 600 restricted_usr_vm 22

(Windowsユーザーは PuTTY経由でsshプロキシを使用 PuTTYのplinkを使用することができます)。

ただし、ForceCommandのおかげで、sshコマンドは無視されると確信しています。 ProxyCommand ssh bastion I am a bannanaは同じ効果があります。ユーザーからの直接接続(ProxyCommandなし)は、restricted_usr_vmへの生のSSHダンプになります。

別の回答へのコメント で説明したように、ForceCommandは要塞ホストへのSSHキーアクセスの管理を非常に困難にします。私は2つの簡単な解決策を考えることができます:(1)ターゲットホストへのアクセスを許可する要塞にそのユーザーのパスワードなしのSSHキーをインストールして要塞でのユーザーのcrontabの実行scp restricted_usr_vm:.ssh/authorized_keys ~/.ssh/または(2)そのファイルのアップロードを許可するWebフォーム(GitHubのような)を作成します。 (3)NFSも機能しますが、.sshディレクトリがルートを持つ誰かによって侵害される可能性があるため、私はあまり好きではありません。 (または同じUID)をマウントするシステムで。

非常によく似たServerFaultの質問 ユーザー名ベースのSSHプロキシ非常によく似た答え (ProxyCommandの詳細)を投稿しました。


ForceCommand ssh -t restricted_usr_vmはタイムアウトをより適切に処理し、ssh -tはちょっと不格好です(そして、おそらく過去には信頼性が低い場合があるため)。また、scpのようなものはProxyCommandを介して完全に機能するが、このメソッドでは機能しないと推測しています。

0
Adam Katz