Linuxで、Active Direcotryを使った認証ができるようになったので、次はsshのシングルサインオン(SSO)をやってみた。
認証基盤の構成は、以前のエントリ RHEL7をActive Directory on Windows Server 2012 R2でユーザ認証させる (2)を参照のこと。
サーバの設定
sshdでGSSAPIを使うには、GSSAPIAuthenticationをyesにする。デフォルトでは有効になっているはず。
また、AuthenticationMethodsに、gssapi-keyex, gssapi-with-micを追加する。これまでの設定で、keyboard-interactiveのみになっていたので、追加すると、下記のようになる。
AuthenticationMethods gssapi-keyex gssapi-with-mic keyboard-interactive
設定が追記できたら、sshd -tで確認の上、sshdを再起動する。
DNSの設定
Linuxのホストの場合、Active Directoryに登録しただけでは自動的にDNSにレコードが登録されていない可能性がある。その場合は、GSSAPIを使った認証が失敗してしまう(Kerberosは名前がとても重要なのだ)。そのため、きちんと名前解決ができるようにDNSの設定をする。正引きだけでなく、逆引きについても登録が必要となる。
せっかくなので、PowerShellで登録してみた。
PS> Add-DnsServerResourceRecordA -ZoneName example.local -IPV4Address 10.0.128.195 -Name server01 PS> Add-DnsServerResourceRecordPtr -ZoneName 0.10.in-addr.arpa -Name 195.128 -PTRDomainName server01.example.local
クライアントの設定
今回の対象はOS X(10.9.5)とする。
コンピュータ名の変更
Active Directoryのドメインに参加させる必要があるので、その準備として、ホスト名を適切なものに変更する。
% sudo scutil --set HostName test01.example.local % sudo hostname test01
ドメインへの参加
MacをActive Directoryのドメインに参加させる。
% dsconfigad -add example.local -username
時間が掛かるので、少し待つ。問題なければなにも出力されないはず。
これで、ADのアカウントでMacにログインできるようになる。
ADアカウントでログイン
Macに対して、ADアカウントでログインした状態で、sshでサーバにログインする。
その際、GSSAPIAuthentication=yesを指定する(または、~/.ssh/configに設定を追記する)。
$ ssh -v -o GSSAPIAuthentication=yes isobe@server01.example.local OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 debug1: Reading configuration data /etc/ssh_config debug1: /etc/ssh_config line 20: Applying options for * debug1: Connecting to server01.example.local [10.0.128.195] port 22. debug1: Connection established. (snip) debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,keyboard-interactive debug1: Next authentication method: gssapi-keyex debug1: No valid Key exchange context debug1: Next authentication method: gssapi-with-mic debug1: Authentication succeeded (gssapi-with-mic). Authenticated to server01.example.local ([10.0.128.195]:22). debug1: channel 0: new [client-session] debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: Sending environment. debug1: Sending env LANG = ja_JP.UTF-8 Last login: Wed Oct 1 20:39:04 2014 from test01.iret.local [isobe@server01 ~]$
GSSAPIを使ってログインしていることを示すため、-vオプションを付与して、debug1ログを出力している。”Authentication succeeded (gssapi-with-mic).”と出力されている通り、GSSAPIを使って認証が成功している。
これで、パスワードや公開鍵を使わずにログインすることができた。
ちなみに、GSSAPIが使えない場合は、前回までの設定のとおり、パスワードとワンタイムパスワードの認証が有効になる。
元記事はこちらです。
「[Linux] sshでGSSAPIを使ったシングルサインオン(SSO)」