web-dev-qa-db-ja.com

Kerberosチケットなしで `ssh`への最初の試みに` kinit`を添付することは可能ですか?

私の大学では、UNIXサーバーへのログインにKerberosベースの認証を使用しています。

パスワードなしのログインを取得する1つの方法は、kinitを実行し、パスワードを入力してから、ssh@Hostを実行することです。

この設定では、.ssh/config内で次のことを行います。

Host SchoolHost1 SchoolHost2
    GSSAPIKeyExchange yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials yes

私の質問は、kinitステップをスキップしてsshを直接実行できるかどうかです。これにより、sshの最初の試行で自動的にKerberosチケットが取得され、その後の試行でto sshにはチケットがあり、パスワードは必要ありませんか?

更新:サーバーはログイン前にauthorized_keysファイルを読み取ることができないため、公開鍵ログインは大学のシステムでサポートされていますnot。これはKerberos / AFSシステムのプロパティであり、実際には回避策はありません。

2
merlin2011

あなたのラップトップでは、~/.bash_loginまたは~/.bashrcファイルのsshを再定義します

ssh () 
{ 
    kinit -R || kinit -r 8days
    command ssh "$@"
}

可能であればチケットを更新します。そうでない場合は、AFSサイトポリシーに同意する場合は、新しいチケットを作成します。

公開鍵ログインは可能ですが、ラップトップを本当に暗号化できない場合の最後の手段としてのみです。sshサーバーで、秘密鍵(ある場合)を~/.ssh/から~/.ssh/private/chmod 700に移動します。 fs setaclは秘密鍵を保護し、fs listacl ~/.ssh/private/はアクセス権があることだけを再確認し、最後に~/.ssh~/.ssh/authorized_keysを誰でも読み取れるようにしてsshdがそれらを表示できるようにしますログインするには-しかし、( kinit -R || kinit -r 8days ) && aklog; klistのようなことをするまでは、AFSアクセスがありません-したがって、scp/tmp/を見ることができますが、/afs/は見ることができません。 scpがログインした後、ファイルにアクセスする前にチケットを取得するには、お知らせください。

2
devon

はい、簡単なスクリプトでこれを行うことができます:

#!/bin/bash

klist || kinit

ssh user@Host

これをPATHに入れて、sshの代わりに実行します。

これは、klistユーティリティを使用して機能します。アクティブなチケットがない場合、klistは失敗し、kinitが実行されます。アクティブなチケットがある場合、klistは成功し、kinitは実行されません。

私はこれを徹底的にテストしていないので、おそらくそれには大きな問題があります。

0
jayhendren