ユーザーの操作を防ぐには、sshauthorized_key で sleep コマンドを使用します。

ユーザーの操作を防ぐには、sshauthorized_key で sleep コマンドを使用します。

クライアントがSSH接続を許可してそのコンピュータに再接続できるようにUbuntuサーバーを設定しています(リバースSSHトンネル)。クライアントがサーバー上で何もしないように無効にする方法を検索し、他の解決策を見つけましたが、次を追加してサーバー上の特定のクライアントに対してAuthorized_keyを設定するのと同じくらい簡単な方法はありませんでした。

command="sleep x seconds"

この解決策を悪くする重要なことを見逃していますか?

答え1

複数のユーザーに制限がある場合は、そのユーザーグループに制限を適用するようにMatchブロックを設定します。/etc/sshd_config特定のSSHキーに制限がある場合は、提案したパスに移動してファイルからコマンドをブロックすることを検討します~/.ssh/authorized_keys

Match防ぐ/etc/sshd_config

マニュアルを読み、Match接続サブsshシステム(例:。

# Add users to the UNIX group "restrictedusers"
Match Group restrictedusers
        AllowTCPForwarding yes
        X11Forwarding no
        AllowAgentForwarding no
        ForceCommand echo No logins permitted

タイプ~/.ssh/authorized_keys

command既存または新しいキー項目にアクセス制御オプションを追加すると、X11Forwarding、プロキシ転送などを適用または無効にできます。ファイルの変更を元に戻したり調整したりするには、リモートシステムにログインできることを確認してください。

restrict,port-forwarding,command="echo No logins permitted" ssh-ed25519 ed25519-public-key-code-goes-here...

どちらの場合も、呼び出し側は、リバースコールバックが設定されたらそれを設定する必要があります。たとえば、次はローカルポートをremoteHost接続します。50123/tcp123/tcp

ssh -fN -R 50123:localhost:123 remoteHost

まず第一に、~/.ssh/config呼び出し元のforでこれをすべて準備できるので、コールバックを開始remoteHostするだけです。ssh remoteHost

Host remoteHost
    ForkAfterAuthentication yes
    SessionType none
    # listenPort targetHost:targetPort
    RemoteForward 50123 localhost:123

関連情報