- PR -

LDAPを用いたsshログイン

投稿者投稿内容
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-06-04 17:32
こんばんわ.
引用:

MTLさんの書き込み (2005-06-03 12:45) より:

kazさんの使われているマシンはdebianですか??


ゴメンナサイ,RedHat 系でした.

anights 様も指摘されていますが,
たしかにここまで「なんらかの形で ssh で login できる」
という情報が見当たりません.
まず「ssh で正常に login できる」ことを確実に確認されることをお奨めします.
MTL
会議室デビュー日: 2005/05/31
投稿数: 12
投稿日時: 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でログインを行いたいです。
以上の目的を明確にしていなくてすいません。
これらに関して何か知識がありましたら教えてください。
おねがいします。
kusumo
会議室デビュー日: 2005/06/07
投稿数: 1
投稿日時: 2005-06-07 16:41
PAMの設定を行っているようですが、
sshd_configの設定で
UsePAM yes
としてますか?

デフォルトではUsePAM noになっているようです。
MTL
会議室デビュー日: 2005/05/31
投稿数: 12
投稿日時: 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
を変更すればよいですのですか?

遅くなってたいへん申し訳ないのですが
お分かりになる方お願いします。
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2005-06-14 09:58
引用:

MTLさんの書き込み (2005-06-13 23:10) より:
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でもログインはできました。



>(Address family not supported by protocol)
これは-hオプションを使って設定に沿ったURLlistを指定すれば出ません。

>(Address already in use)
既にデーモンが起動していてlisten出来ていません。

>この状態で、sshでもtelnetでもログインはできました。
どういったアカウントがログインできるんですかね?
OpenLDAP上にのみ存在するアカウントなら望む動きだと思いますが。。。
MTL
会議室デビュー日: 2005/05/31
投稿数: 12
投稿日時: 2005-06-14 13:53
anightsさんご返答ありがとうございます。

telnetとsshでログインできるアカウントは
LDAP上にのみ存在するアカウントではなく、
/etc/passwdにあるアカウントです。

私は/etc/passwdを使用せずに
sshやrshでログインを行いたいと思っております。
MTL
会議室デビュー日: 2005/05/31
投稿数: 12
投稿日時: 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が表示されます。エントリーがなくなったと勘違いしないでください。

以上が私が今回行った作業すべてです。
返信くれたみなさまありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)