Single Sign-On; SSO
一回承認を通れば、他のコンピュータのリソースも権限に応じて利用できる仕組み
ここでは研究室内ADドメインに繋がったwindowsPCにログインすれば、ジョブ実行マシンへのsshログイン、
マシン同士のssh/rshログイン、並びに研究室内webサーバサイトへの自動認証らができることを想定する。
windowsPC/計算マシン/webサイトらは既にドメインに参加済みとする。
*据え置き型のPCではなく、ノートPCでドメインに参加してないPCもあるだろうけど...

samba42/SSO/Kerberos_ssh
*CentOS 7でkerberos対応なrsh/rloginって提供されていないっぽい
samba42/SSO/Kerberos_httpd
既にLinuxマシンはドメインに参加していて、sssdによる認証のために /etc/krb5.<ホスト名>.keytabファイルがドメインコントローラから配布されているとする。*Linuxマシンのドメイン参加方法はsamba42/lin参加を参照のこと
なので、オリジナルなkeytabファイルはドメインコントローラにもあり、
[root@c ~]# klist -ke /etc/krb5.n1.keytab
Keytab name: FILE:/etc/krb5.n1.keytab
KVNO Principal
---- --------------------------------------------------------------------------
1 n1$@SYBYL.LOCAL (des-cbc-crc)
1 n1$@SYBYL.LOCAL (des-cbc-md5)
1 n1$@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
1 n1$@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
1 n1$@SYBYL.LOCAL (arcfour-hmac)
[root@c ~]#として、存在している。なければ再作成する。
この/etc/krb5.<ホスト名>.keytabファイルに、サービス記述子がhostとなるサービスプリンシパルを追記する。
[root@c ~]# /opt/samba/bin/samba-tool domain exportkeytab /etc/krb5.n1.keytab --principal=host/n1.sybyl.local
[root@c ~]#
[root@c ~]# klist -ke /etc/krb5.n1.keytab
Keytab name: FILE:/etc/krb5.n1.keytab
KVNO Principal
---- --------------------------------------------------------------------------
1 n1$@SYBYL.LOCAL (des-cbc-crc)
1 n1$@SYBYL.LOCAL (des-cbc-md5)
1 n1$@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
1 n1$@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
1 n1$@SYBYL.LOCAL (arcfour-hmac)
1 host/n1.sybyl.local@SYBYL.LOCAL (des-cbc-crc)
1 host/n1.sybyl.local@SYBYL.LOCAL (des-cbc-md5)
1 host/n1.sybyl.local@SYBYL.LOCAL (arcfour-hmac)
[root@c ~]#と追記された内容を確認して、この/etc/krb5.n1.keytabファイルを n1 サイトに再配信して上書きする。
[root@c ~]# scp /etc/krb5.n1.keytab root@n1:/etcn1サイト側では、この /etc/krb5.n1.keytabを/etc/krb5.keytabにリンクを張る。
*もしくはドメインコントローラからのコピーの際に/etc/krb5.keytabとしてもいいかも
[root@n1 ~]# ln -s /etc/krb5.n1.keytab /etc/krb5.keytab
[root@n1 ~]# ls -l /etc/krb5.keytab
lrwxrwxrwx 1 root root 19 3月 21 15:48 /etc/krb5.keytab -> /etc/krb5.n1.keytab
[root@n1 ~]#kerberosサーバはドメインコントローラですよと定義します
[root@n1 ~]# vi /etc/krb5.conf
[libdefaults]
default_realm = SYBYL.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
SYBYL.LOCAL = {
kdc = c.sybyl.local
admin_server = c.sybyl.local
}
[domain_realm]
.sybyl.local = SYBYL.LOCAL
sybyl.local = SYBYL.LOCAL
[root@n1 ~]#/etc/ssh/sshd_config で GSSAPIAuthentication と GSSAPICleanupCredentials が有効であることを確認
*OSインストール直後ならこの値は2つとも有効と定義されている
[root@n1 ~]# egrep "^GSSAPIAuthentication|^GSSAPICleanupCredentials" /etc/ssh/sshd_config
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
[root@n1 ~]#windows端末にGSSAPI対応ターミナルソフトをインストールします。ここでは PuTTY を使用します。
本家様 http://www.chiark.greenend.org.uk/~sgtatham/putty/
ダウンロードページ http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
から
putty.exeをクリックしてダウンロード。

これを例えば C:\Program Files(x86)\PuTTY\ に置く

*putty.exeのショートカットを作成して、C:\Users\Default\Desktopに配置すれば、初回ログイン時にディスクトップにショートカットが配置される
windowsマシンにドメインログインして、PuTTYを起動する
左側のツリーで「Session」を開き、パスワードなしでアクセスしたいLinuxサーバを指定します。

次に、「Connection」->「Data」にて、「Use system username(illya)」を選択します。これでログインユーザでのアクセスとなる。

最後に「Connection」->「SSH」->「Auth」->「GSSAPI」にて「Allow GSSAPI credential delegation」を有効にする。

このように定めた設定を保存します。
左側のツリーの「Session」から「Saved Sessions」として「gssapi_N1」と定義して「Save」ボタンをクリックします。

接続設定名「gssapi_N1」を引き出して、アクセスを試みます。
左側のツリーの「Session」から保存した設定「gssapi_N1」を選び「Load」ボタンをクリックします。

そして、PuTTY画面下部の「Open」ボタンをクリックします。
![]()
初回にマシンキーの登録が求められるが「はい」を押します。
すると、パスワードなしでLinuxメンバサーバにログインできる。

上記のままだと、機動の度に接続設定名を再読み込む必要があり面倒です。それを簡略化する方法としてショートカットを作成します。
C:\Program Files(x86)\PuTTY\ に配置したPuTTY.exeのショートカットをディスクトップらに作ります。

作ったショートカットの「プロパティ」を開いて、「リンク先」入力欄のPuTTY.exeに保存したセッション名を引数として加えます。
"C:\Program Files (x86)\PuTTY\putty.exe" -load gssapi_N1「作業フォルダ」入力欄は、そのままでもいいが、ホームディレクトリ(%HOMEPATH%)でも宜しいかと。

これで、このショートカットをダブルクリックすれば、パスワードの入力なしに、Linuxメンバサーバにアクセスできます。
*なのでこのショートカットの名称を N1 とかマシン名にすればいいのかな
留意 設定が完了したら[save]する事。しないとその場限りです。


