人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

LDAPに関しての質問です。
LDAPサーバーAがあり、ここに登録されているユーザーUがあります。
ほかにサーバーB,Cがあり、それぞれユーザーUでログインできるように設定しました。
サーバーBにユーザーUでログインし、ターミナルからサーバーCにユーザーUでsshのログインをしようとすると、パスワードのプロンプトが出ます。
正しいパスワードを入れれば当然ログインできるのですが、サーバーBにユーザーUでログインしているのだから、わざわざパスワードを入れたくないと思っています。

また、サーバーBでsshの公開鍵を作ってサーバーCに入れなければいけないようなら、LDAPを使わない場合と大して手間が変わりません。

この状態はそもそもおかしいのでしょうか?
セットアップがうまくできていれば、サーバーB上で、"ssh userU@serverC"とすれば何事もなくログインできるものなのか、何か特別な設定が必要なのか、もともとそういうことはできないのかを教えていただけないでしょうか。

●質問者: Cyclomedusa
●カテゴリ:コンピュータ
✍キーワード:LDAP SSH サーバー ターミナル パスワード
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● JULY
●60ポイント ベストアンサー

ssh のホストベース認証を使うしかないような気がします。

SSHのホストベース認証設定 | Miracle Linux Support

LDAP でパスワード情報を共有しても、ssh コマンド自身が、実行するユーザのパスワードを知ることが出来ません。一般的には、パスワード情報として保持しているのは、パスワードの文字列に対して一方向関数で求めたハッシュ値が保存される(ソルトの話はちょっと脇に置いておきます)ので、パスワード文字列そのものは、パスワードの入力を受けたプログラムが、認証処理時にだけ知っている、というのが通常です。

なので、ssh クライアントが実行しているユーザのパスワードを知ることは出来ません。

そのため、ssh の認証でパスワード認証を使っている場合、サーバ B と サーバ C でパスワードが一致していたとしても、ssh クライアントがパスワード文字列を送ることが出来ないため、ユーザが入力せざるを得ません。

ホストベース認証にすれば、

ホストベース認証とは、sshサーバとクライアントが、ユーザレベルの認証を省略して、直接認証を行う認証方式です。この方式では、サーバに登録済みのクライアントマシンから接続があった場合は、そのクライアントマシンのユーザ情報についても信用して接続を許可します。

となるので、ホストレベルで認証が通れば、ユーザのパスワードとは無関係に、クライアントから要求されたユーザが存在していて有効であれば、許可されることになります。

また、サーバーBでsshの公開鍵を作ってサーバーCに入れなければいけないようなら、 LDAPを使わない場合と大して手間が変わりません。

強いて言えば、LDAP でユーザアカウントの情報を共有していれば、繋ぎ先にアカウントそのものが無い、というケースは心配しなくて良い、という事は言えます。

LDAP の Password アトリビュートでパスワード文字列そのものを保持する、という事は可能なので、その上でスクリプトで ssh コマンドを呼び出して、LDAP から取り出した生のパスワードを渡して、といった事は不可能ではないと思いますが、ssh コマンド単独では無理だと思います。

あと、公開鍵認証でクライアントサイドで ssh-agent を使えば、ssh-agent が動いている間は、鍵のパスフレーズの入力を省ける、というのはありますが、ますます LDAP から遠ざかりますね。

◎質問者からの返答

詳しい説明ありがとうございます。

ログイン元がLDAPで認証済みのユーザーかどうかと言うことまではsshは気にしてくれないのですね。

個別のユーザーの認証を省きたいなら、ホスト全体の認証をするしかないと。

よく分かりました、ありがとうございます。

ssh-agentのことは知りませんでした。使ってみようと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ