誰かがSSHをサーバーに試してみるたびに(例えばUbuntu 14.04)ルビースクリプトを呼び出そうとしています。
たとえば、誰かがssh root @ serveripでログインしようとしていて、私のrubyスクリプトが呼び出されなければならず、スクリプトがtrueを返す場合にのみログインプロセスを続行し、falseを返す場合は接続を終了する必要があります。誰かがSSHを使ってログインするたびにプロセスを呼び出す
どうすればこの問題を解決できますか?
ありがとうございました。
誰かがSSHをサーバーに試してみるたびに(例えばUbuntu 14.04)ルビースクリプトを呼び出そうとしています。
たとえば、誰かがssh root @ serveripでログインしようとしていて、私のrubyスクリプトが呼び出されなければならず、スクリプトがtrueを返す場合にのみログインプロセスを続行し、falseを返す場合は接続を終了する必要があります。誰かがSSHを使ってログインするたびにプロセスを呼び出す
どうすればこの問題を解決できますか?
ありがとうございました。
サーバーのsshd_configファイルにForceCommandパラメータを使用してみることができます。それはかなり簡単、よく:)オンラインあなたは、configファイルの一番下に入る
文書化されます:あなたは、特定の条件をチェックし、接続を終了することができた場合
ForceCommand /path/to/script
のでわからないが、しかし、これはあなたに導くかもしれません。あなたの要件を満たすために
、あなたはまた、あなたがForceCommand
オプションを使用する場合、$SSH_ORIGINAL_COMMAND
環境変数で動作します:
ForceCommand /path/to/script && $SSH_ORIGINAL_COMMAND
をこれはあなたのスクリプトを実行し、/path/to/script
の終了ステータスに基づいて、それが実行されますユーザーコマンドまたはセッションを終了します。
これはすごいですが、ちょっとした質問ですが、どうやってセッションを終了できますか?スクリプトから?ある種の例外を投げるのと同じように?申し訳ありませんが、私は非常にこれに新しいです。 –
スクリプトがゼロ以外の終了コードを返した場合、元のコマンドは実行されず、コマンドは終了し、セッションは終了します。 – Jakuje
http://stackoverflow.com/questions/37488014/usr-bin-env-ruby-no-such-file-or-directory-at-ssh-login @Jakuje –
答えで友人に言われているように、終了コードベースの実行は私のためには機能しませんでした。ここで
が回避策です: - 一部の人々で述べたように
、私は、彼らが特定の条件を満たした場合、私はbashのを開いたスクリプト内でその後/etc/ssh/sshd_config
ForceCommand /path/to/script
でこれを使用していました。たとえば、bashの場合
#!/bin/bash
if [ condition ]
then
bash #This will open bash if condition is satisfied.
//login
fi
ありがとうございました!
これは基本的にコマンドラインに置かれたすべてのユーザコマンドを壊します(例えば 'scp')。' $ SSH_ORIGINAL_COMMAND'変数もチェックして、はい、これは部分的な回避策です。 – Jakuje
次のリンクを確認してください:http://askubuntu.com/questions/397674/run-scripts-automatically-in-server-after-ssh-connection – SilentMonk