- - PR -
LDAPを用いたsshログイン
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-04 17:32
こんばんわ.
ゴメンナサイ,RedHat 系でした. anights 様も指摘されていますが, たしかにここまで「なんらかの形で ssh で login できる」 という情報が見当たりません. まず「ssh で正常に login できる」ことを確実に確認されることをお奨めします. | ||||
|
投稿日時: 2005-06-04 23:47
kazさんanightsさんご返答ありがとうございます。
sshの件なのですが、LDAPを起動していない状態で 別の場所にあるPCからsshでログインできます。 コマンドとしては $ssh ldap@172.20.11.227です。 そしてその状態で、/etc/init.d/slapd をしまして、LDAPを起動させます。 そして、/etc/passwdにあるユーザ(ldap)をコメントアウトして またsshでログインを試みると失敗します。 また言い忘れていてたいへん申し訳ないのですが、 私がLDAPを用いてしたいことは /etc/passwdやNISの代わりにLDAPを使用し、 またLDAPを用いてsshでログインrshでログインを行いたいです。 以上の目的を明確にしていなくてすいません。 これらに関して何か知識がありましたら教えてください。 おねがいします。 | ||||
|
投稿日時: 2005-06-07 16:41
PAMの設定を行っているようですが、
sshd_configの設定で UsePAM yes としてますか? デフォルトではUsePAM noになっているようです。 | ||||
|
投稿日時: 2005-06-13 23:10
遅くなって申し訳ありません。
デバッグモードがどんなものかわからないのと いろいろご指摘いただいた点をいじってみたのですが 結局、 ldap1:/home/syoshida# slapd -d 255 -f /etc/ldap/ldap.conf @(#) $OpenLDAP: slapd 2.0.23-Release (Fri Jan 10 14:34:45 UTC 2003) $ buildd@cyberhq:/build/buildd/openldap2-2.0.23/debian/build/servers/slapd daemon_init: <null> daemon_init: listen on ldap:/// daemon_init: 1 listeners to open... ldap_url_parse_ext(ldap:///) daemon: socket() failed errno=97 (Address family not supported by protocol) daemon: bind(6) failed errno=98 (Address already in use) daemon: bind(6) failed slapd stopped. と表示されました。 これでは自分の設定ではslapdは起動していない感じですね。 この作業は syoshidaユーザで作業を行ったものです。 この状態で、sshでもtelnetでもログインはできました。 kusumoさんにご指摘していただいた sshd_configの設定なのですが、 debianでは UsePAM という項目がなく Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key UsePrivilegeSeparation yes PAMAuthenticationViaKbdInt no KeyRegenerationInterval 3600 ServerKeyBits 768 # Logging SyslogFacility AUTH LogLevel INFO # Authentication: LoginGraceTime 600 PermitRootLogin yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys # rhosts authentication should not be used RhostsAuthentication no # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts yes # For this to work you will also need host keys in /etc/ssh_known_hosts RhostsRSAAuthentication no # similar for protocol version 2 HostbasedAuthentication no # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication #IgnoreUserKnownHosts yes # To enable empty passwords, change to yes (NOT RECOMMENDED) PermitEmptyPasswords no # Uncomment to disable s/key passwords #ChallengeResponseAuthentication no # To disable tunneled clear text passwords, change to no here! PasswordAuthentication yes X11Forwarding no X11DisplayOffset 10 PrintMotd no #PrintLastLog no KeepAlive yes #UseLogin no Subsystem sftp /usr/lib/sftp-server となっていました。 ここのPAMAuthenticationViaKbdInt no を変更すればよいですのですか? 遅くなってたいへん申し訳ないのですが お分かりになる方お願いします。 | ||||
|
投稿日時: 2005-06-14 09:58
>(Address family not supported by protocol) これは-hオプションを使って設定に沿ったURLlistを指定すれば出ません。 >(Address already in use) 既にデーモンが起動していてlisten出来ていません。 >この状態で、sshでもtelnetでもログインはできました。 どういったアカウントがログインできるんですかね? OpenLDAP上にのみ存在するアカウントなら望む動きだと思いますが。。。 | ||||
|
投稿日時: 2005-06-14 13:53
anightsさんご返答ありがとうございます。
telnetとsshでログインできるアカウントは LDAP上にのみ存在するアカウントではなく、 /etc/passwdにあるアカウントです。 私は/etc/passwdを使用せずに sshやrshでログインを行いたいと思っております。 | ||||
|
投稿日時: 2005-07-10 00:51
返信が遅くなってしまいましたが、LDAPを用いたsshログインはできました。
以下に私が行った作業を説明したいと思います。 作業環境としては、LDAPサーバであるAというマシンと 別の場所にあるLDAPクライアントのBというマシンと操作するCというマシンの3台を用意しました。 まずAにはldapというユーザを作成します。(Bにはそのユーザはいません。) そしてCから以下のコマンドを実行しました。 $ssh ldap@172.20.11.228(BのIPアドレスです) その結果ちゃんとログインでき、ユーザ名の共有ができました。 そこでなぜ今までできなかったのか調査していたのですがはっきりとした原因がわからずまだ調査中です。 ここには私が直した設定について説明したいと思います。 【サーバ側の設定】 インストールしたもの slapd libnss-ldap libpam-ldap ldap-utils nscd db4.2-utils([debian-users:43781]参照) /etc/libnss-ldap.conf の書き換え 私は認証にだけLDAPを用いるのですが、 インストール時に "database require login?"と聞かれてYesと答えていたため binddn cn=admin,dc=ldap,dc=com bindpw (パスワード) の2行の記述がありました。そのためこの2行をコメントアウトしました。 同様に/etc/pam_ldap.confの書き換え ここも下の記述があったためコメントアウトしました。 rootbinddn cn=admin,dc=ldap,dc=com /etc/nsswitch.confの記述例 以下の設定にしました。 passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis /etc/pam.d/*の書き換え ここは/usr/share/doc/libpam-ldap/examples/pam.d にあったものに置き換えました。 【クライアント側の設定】 インストールしたもの libnss-ldap libpam-ldap 上の二つをインストールするときは、きちんとサーバで決めた設定に合わせる。 サーバと同じように/etc/nsswitch.confと/etc/pam.dを編集 クライアントはこれだけで大丈夫でした。 以上が今回私が行った作業です。 しかし、今回、私がこの作業を行ってわかった単純なミスがあったので紹介したいと思います。 これが直接の原因でLDAPを使って認証できなかったのではないかもしれないのですが・・・ /etc/passwd が '#' でコメントアウトできないということ。 私が勝手に勘違いしていたのですが http://www.linux.or.jp/JM/html/shadow/man5/passwd.5.html とか見ても/etc/passwd は'#' でコメントアウトできると書いてありません。 私は、LDAPだけの認証でログインしようとするとき、 /etc/passwd にあるユーザを'#' でコメントアウトしてからログインしていたのですが それでは今までログインできませんでした。 そこで思い切って/etc/passwd ごと消してしまったら見事にログインできました。 なのですが、1回ログインできるようになってから同じように /etc/passwd にあるユーザを'#' でコメントアウトしてログインしてもちゃんとログインできてしまいました。 なのでこれが原因であるかは謎です・・・ web上にあるldapaddのコマンド このコマンドなのですが、web上に様々な例があるのですが、例えば、 # ldapadd -x -w hoge -D "cn=admin,dc=ldap,dc=com" -f passwd.ldif と実行すると、 ldap_bind: Invalid credentials (49) などとエラーがでてしまいます。 そこで今回私が用いたコマンドを紹介します。 # ldapadd -x -D "cn=admin,dc=ldap,dc=com" -W -f passwd.ldif です。少なくと私はこれで成功しました。 このldapaddの作業なのですが、私は、passwd.ldifを読み込ませてからgroup.ldifを読み込ませました。 migrationtoolsなどを使用する場合、すべてがldif形式のファイルになり情報が大量になります。 そのため、ldapsearchやslapcatを行うと、まずpasswd.ldifのファイルが上のほうに表示されてから group.ldifが表示されます。エントリーがなくなったと勘違いしないでください。 以上が私が今回行った作業すべてです。 返信くれたみなさまありがとうございました。 |
«前のページへ
1|2|3