クライアントが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/tcp
123/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