質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • CentOS

    2828questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Webサーバー

    462questions

    Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Shellinaboxですぐにセッションが閉じてしまう。(ログインできない)

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 868

j-suzuki

score 20

CentOS6でサーバを構築しています。
その管理のためにShellinaboxを導入したいのですが、リバースプロキシ、SSHの設定をしたところログイン画面は見えるのですが、IDを入力するとSession closed. になってログインできません。
https://github.com/shellinabox/shellinabox/issues/88
このサイトの

From luka.kra...@gmail.com on January 12, 2015 13:16:45
For future readers :)

I had the same issue on my CentOS 6.6 and I found out that the code from shellinabox/launcher.c replaces "@localhost" in ssh command with "@hostname.domain" (output of command uname -n) ...

[luka@hostname shellinabox]$ uname -n
hostname.domain

This is quick patch that I am using (but than you missout on nice shell prompt):

diff --git a/shellinabox/launcher.c b/shellinabox/launcher.c
index 68d8862..3aa9100 100644
--- a/shellinabox/launcher.c
+++ b/shellinabox/launcher.c
@@ -1000,16 +1000,16 @@ static pam_handle_t *internalLogin(struct Service *service, struct Utmp *utmp,

// Replace '@localhost' with the actual host name. This results in a nicer
// prompt when SSH asks for the password.

  •    char *ptr                  = strrchr(cmdline, '@');
  •    if (!strcmp(ptr + 1, "localhost")) {
  •      int offset               = ptr + 1 - cmdline;
  •      check(cmdline            = realloc(cmdline,
  •                                         strlen(cmdline) + strlen(fqdn) -
  •                                         strlen("localhost") + 1));
  •      ptr                      = cmdline + offset;
  •      *ptr                     = '\000';
  •      strncat(ptr, fqdn, strlen(fqdn));
  •    }
    +    // char *ptr                  = strrchr(cmdline, '@');
    +    // if (!strcmp(ptr + 1, "localhost")) {
    +    //   int offset               = ptr + 1 - cmdline;
    +    //   check(cmdline            = realloc(cmdline,
    +    //                                     strlen(cmdline) + strlen(fqdn) -
    +    //                                     strlen("localhost") + 1));
    +    //   ptr                      = cmdline + offset;
    +    //   *ptr                     = '\000';
    +    //   strncat(ptr, fqdn, strlen(fqdn));
    +    // }

free((void *)service->cmdline);
service->cmdline           = cmdline;

I think that the correct thing to do here is to configure host and domain name, but i didn't try that (/etc/hosts and /etc/resolv.conf) ...
これをすればいいのではとなったのですが、luncher.cが見つけられません。

find / -name luncher.cで探しています。

どうしたらいいでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • granfa_yuzo

    2017/01/31 07:32

    tera term等他のツールでのログイン可否を確認して、原因が設定なのかShellinabox自体にあるのかを確認した方が良いと思いますが。

    キャンセル

  • j-suzuki

    2017/01/31 11:48

    macOSでターミナルではログインできています

    キャンセル

回答 1

checkベストアンサー

0

Shell In A Boxをどのようにして導入したかが不明ですが、EPEL等からyumで導入したのでしたら見つからないと思います。

# rpm -ql shellinabox
/etc/rc.d/init.d/shellinaboxd
/etc/sysconfig/shellinaboxd
/usr/sbin/shellinaboxd
/usr/share/doc/shellinabox-2.19
/usr/share/doc/shellinabox-2.19/AUTHORS
/usr/share/doc/shellinabox-2.19/COPYING
/usr/share/doc/shellinabox-2.19/GPL-2
/usr/share/doc/shellinabox-2.19/NEWS
/usr/share/doc/shellinabox-2.19/README
/usr/share/doc/shellinabox-2.19/README.Fedora
/usr/share/doc/shellinabox-2.19/print-styles.css
/usr/share/doc/shellinabox-2.19/shell_in_a_box.js
/usr/share/doc/shellinabox-2.19/styles.css
/usr/share/man/man1/shellinaboxd.1.gz
/usr/share/shellinabox
/usr/share/shellinabox/color.css
/usr/share/shellinabox/monochrome.css
/usr/share/shellinabox/white-on-black.css
/var/lib/shellinabox

もしSession closed too fast #88の方法を試すのであれば、Buildの方法に沿って、まずgitコマンドを使ってソースをダウンロードし、変更してコンパイルする必要があります。
gitコマンドでダウンロードすれば、以下のようにダウンロードしたディレクトリに出来たshellinabox/shellinaboxディレクトリにlauncher.cはあります。

$ cd /home/hogehoge
$ git clone https://github.com/shellinabox/shellinabox.git
$ find /home/hogehoge/shellinabox -name launcher.c
/home/hogehoge/shellinabox/shellinabox/launcher.c

ちなみに、/etc/sysconfig/shellinaboxdOPTS=はデフォルトのままでしょうか?
下記のように変更したら、前述のソース変更などしなくても普通にログインできました。

#OPTS="--disable-ssl-menu -s /:LOGIN"
OPTS="--localhost-only --disable-ssl --disable-ssl-menu -s /:SSH:localhost"

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.33%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • CentOS

    2828questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Webサーバー

    462questions

    Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。