私は ssh (openssh) と radius について多くの調査を行ってきました。
私がしたいこと:
RADIUS サーバーまたは LDAP ストアに保存されている資格情報 (ユーザー名とパスワード) を使用して、機器に SSH 接続します。私はオンラインで読んでいますが、radius サーバーのバックグラウンドで LDAP サーバーを実行していると指摘する人もいます。これは機能しますが、ユーザーがローカル マシンで見つかった場合にのみ機能します。
問題: 認証情報を含む RADIUS サーバー経由でログインすることにより、自分の機器に ssh (または telnet) で接続する方法はありますか? そうでない場合は、クライアント(接続しようとしているマシン)が資格情報の更新されたリストを取得し、中央の場所からローカルに保存する方法があります(RADIUSサーバーまたはSQLデータベースなど)。
Radius 経由で接続できましたが、ローカルのアカウントでのみ接続できましたが、たとえば、ローカルに存在しないアカウント (クライアント側) に接続しようとすると、「正しくありません」と表示されます
半径の出力は次のとおりです。 コード:
rad_recv: Access-Request packet from host 192.168.4.1 port 5058, id=219, length=85 User-Name = "klopez"
User-Password = "\010\n\r\177INCORRECT"
NAS-Identifier = "sshd"
NAS-Port = 4033
NAS-Port-Type = Virtual
Service-Type = Authenticate-Only
Calling-Station-Id = "192.168.4.200"
コード:
[ldap] performing user authorization for klopez[ldap] WARNING: Deprecated conditional expansion ":-". See "man unlang" for details
[ldap] ... expanding second conditional
[ldap] expand: %{User-Name} -> klopez
[ldap] expand: (uid=%{Stripped-User-Name:-%{User-Name}}) -> (uid=klopez)
[ldap] expand: dc=lab,dc=local -> dc=lab,dc=local
[ldap] ldap_get_conn: Checking Id: 0
[ldap] ldap_get_conn: Got Id: 0
[ldap] performing search in dc=lab,dc=local, with filter (uid=klopez)
[ldap] No default NMAS login sequence
[ldap] looking for check items in directory...
[ldap] userPassword -> Cleartext-Password == "somepass"
[ldap] userPassword -> Password-With-Header == "somepass"
[ldap] looking for reply items in directory...
[ldap] user klopez authorized to use remote access
[ldap] ldap_release_conn: Release Id: 0
++[ldap] returns ok
++[expiration] returns noop
++[logintime] returns noop
[pap] Config already contains "known good" password. Ignoring Password-With-Header
++[pap] returns updated
Found Auth-Type = PAP
# Executing group from file /etc/freeradius/sites-enabled/default
+- entering group PAP {...}
[pap] login attempt with password "? INCORRECT"
[pap] Using clear text password "somepass"
[pap] Passwords don't match
++[pap] returns reject
Failed to authenticate the user.
WARNING: Unprintable characters in the password. Double-check the shared secret on the server and the NAS!
Using Post-Auth-Type Reject
# Executing group from file /etc/freeradius/sites-enabled/default
+- entering group REJECT {...}
[attr_filter.access_reject] expand: %{User-Name} -> klopez
attr_filter: Matched entry DEFAULT at line 11
++[attr_filter.access_reject] returns updated
Delaying reject of request 3 for 1 seconds
pam_radius もインストールされており、動作しています (ローカルに存在するアカウントにログインできます)。私はこれを読みましたが、これが 100% 正確かどうかはわかりません:
http://freeradius.1045715.n5.nabble.com/SSH-authendication-with-radius-server-fails-if-the-user-does-not-exist-in-radius-client-td2784316.html および http: //fhf.org/archives/713
tl:dr: ローカルにユーザー/パスを持たないマシンに ssh する必要があり、その組み合わせは RADIUS サーバーや LDAP などのリモートに保存されます。
お知らせ下さい
PS
このソリューションは、radius サーバーまたは ldap を使用することをお勧めしますが、必須ではありません。代替案があれば教えてください。
ありがとう、
ケビン