[解決済み] SSHトンネルのセットアップを許可するが、それ以外のことは許可しない
質問
あるユーザーが特定のポート (たとえば 5000) で特定のマシンに SSH トンネルを設定できるようにしたいのですが、このユーザーをできる限り制限したいと思います。(認証は公開/秘密鍵ペアで行われます)。
関連する ~/.ssh/authorized_keys ファイルを編集する必要があることは分かっていますが、(公開鍵以外の)そこに置くべきコンテンツが正確に分かりません。
どのように解決するのですか?
Ubuntu 11.10 では、ポート転送を許可する一方で、-T の有無にかかわらず ssh コマンドをブロックし、scp コピーをブロックできることがわかりました。
具体的には、私は localhost:6379 にバインドされた redis サーバーを持っており、鍵ファイルを持っていて ssh でログインする他のホストと ssh トンネルを介して安全に共有したいと思っています。
$ ssh -i keyfile.rsa -T -N -L 16379:localhost:6379 someuser@somehost
これにより、redis-server、"somehost"のポート6379は、sshコマンドを実行するホスト上のローカルに、"localhost"のポート16379にリマップされて表示されることになります。
リモートの "somehost" で authorized_keys に使用したものは次のとおりです。
cat .ssh/authorized_keys (portions redacted)
no-pty,no-X11-forwarding,permitopen="localhost:6379",command="/bin/echo do-not-send-commands" ssh-rsa rsa-public-key-code-goes-here keyuser@keyhost
no-ptyはターミナルを開きたいほとんどのsshの試行をトリップさせます。
permitopenは転送が許可されるポートを説明します。この場合、ポート6379は私が転送したかったredis-serverのポートです。
command="/bin/echo do-not-send-commands" は、誰かまたは何かが ssh -T またはその他の方法でホストにコマンドを送信することに成功した場合に、"do-not-send-commands" をエコーバックしています。
最近の Ubuntu から
man sshd
で、authorized_keys / コマンドは以下のように記述されています。
command="command" この鍵が認証に使用されるたびにコマンドが実行されることを指定します。 実行されるコマンドを指定します。 ユーザが指定したコマンドは(もしあれば)無視されます。 無視されます。
scp secure file copying を使用しようとすると、 "do-not-send-commands" のエコーが発生して失敗します; sftp もこの設定では失敗することが分かっています。
以前の回答で示された制限付きシェルの提案も良いアイデアだと思います。 また、ここで詳述されているすべてのことは、"man sshd" を読み、そこで "authorized_keys" を検索することで決定することができることに同意するものとします。
関連
-
[解決済み] 全ユーザーのcronジョブを一覧表示する方法を教えてください。
-
[解決済み] シンボリックリンクとハードリンクの違いは何ですか?
-
[解決済み] Unixでテキストファイルからあらかじめ決められた範囲の行を抽出するには?
-
[解決済み] ファイルディスクリプタとは何か、わかりやすく解説します。
-
[解決済み] sedがその場でファイルを編集
-
[解決済み】findコマンドで拡張子を持つファイルを全て一覧から探すには?
-
[解決済み] どうしてgrepはそんなに速く動くのですか?
-
[解決済み] UNIXソートでヘッダーラインを無視する方法はありますか?
-
[解決済み] UNIXでファイルの追加はアトミックですか?
-
[解決済み] UNIX シェルスクリプトで 10 進数から 16 進数に変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] sedがその場でファイルを編集
-
[解決済み] PowerShellはWindowsのCygwinシェルを置き換える準備ができていますか?[クローズド]
-
[解決済み】Crontab - ディレクトリで実行する
-
[解決済み】findコマンドで拡張子を持つファイルを全て一覧から探すには?
-
[解決済み] Unixでソートせずにファイル内の重複行を削除する方法
-
[解決済み] 排他ロックと共有ロックの違いは何ですか?
-
[解決済み] シンボリックリンクを作成した後に、そのシンボリックリンクの指す先を変更することはできますか?
-
[解決済み] シェルスクリプト内の文字列を変数で置換する
-
[解決済み] UNIXにおけるNULL文字の識別と削除
-
[解決済み] あるポートでリッスンしているプロセスのpidを決定する