単一セッションへのSSHアクセスの許可

単一セッションへのSSHアクセスの許可

単一セッション中に特定のユーザーにSSHアクセスを許可するためのツール/変更されたssh-server/sshオプションがあるかどうか疑問に思います。私が避けたいのは、特定のゲスト用のユーザーアカウントとパスワードを作成することです。代わりに、特定のアクセス権を持つ既存のユーザーアカウントを使用して一度だけ設定できます。私は、アクセスを許可したすべての人と同じアカウント情報を共有したくありません。アクセスは、指定された間隔の後に一度だけ機能するかタイムアウトする必要があります。それ以外の場合は、ツールがアクセスを検出したかどうか、またはアクセスを許可するかどうかを尋ねるメッセージが表示されます。アイデアはラインを共有することです。

ssh tempuser001@host

誰がtempuser001アクセスしようとしているが実際のユーザーと一致しないサーバーを知らせます。ユーザーは一時的な権限を使用してsshを介して接続できscprsyncなどのトンネルを介して機能するすべての操作を実行できますvnc。これは、リモートユーザーができる方法であるチームビューアに触発されました。私はその人とIDを共有し、自分のデスクトップにアクセスできました。

ベストアンサー1

1つの解決策はSSHキーを使用することです。

特定のSSHキーを使用してサーバーにログインするたびに実行するコマンドを指定できます。これを単純なログインスクリプトと組み合わせることで、必要なすべてのアクセス制御を得ることができます。

以下は、特定の日付までアクセスを許可する簡単な例です。


ユーザーの SSH をターゲット・ユーザーのauthorized_keysファイルに追加します。この例では、ユーザーがアクセスできなくなる日付を追加しました。

~/.ssh/authorized_keys

command="/etc/ssh/access.sh 2013-04-05" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDc7nKsHpuC6WW8sBbf1j0snelmBsPAN5GQdJ86sJCyCsDzykvB2i2anLS/U131p0yDf0bU8W8kdsLE9pHQ5NLWlxlyWmFxdKujg4B+WxyHFKO0PHKfQhXEwMrYE4m9QwGYtsQrrWXBg4vQwUvOQDA4cNhdvNrIf/V+BGcdWtCXO/JGy7vkyKLd8LLHcZGsG3Pq5trHAKHaWkQgBN8P+atIX3FbwwQl4Ja020P7LW0ddPuUJxltOS11ZjdsG04s/xpL6JX3xi9FdDpO13SkQ5cqD0GIFkI+CLksqGYvvvpC7/22Rl4hc3nAcOIiwekylSB5rpU4LawF1IxCk0sg0BGr

実行するログインスクリプトを作成します。

/etc/ssh/access.sh

#!/bin/bash

until="$1"

if (( $(date --date="$until" +%s) < $(date +%s) )); then
    echo "Your login has expired"
    exit
fi

exec ${SSH_ORIGINAL_COMMAND:--a -${SHELL##*/} $SHELL}

chmod a+x /etc/ssh/access.sh(生成後忘れないでください)


アクセス権が期限切れになると、次のように表示されます。

PROMPT # ssh localhost
Your login has expired
Connection to localhost closed.
PROMPT #

おすすめ記事