1. 概要

SSH は、リモートマシンに接続し、安全な方法でそれらを操作するために最もよく使用されるアプリケーションの1つです。 これは、リモートサーバーに接続して、ローカルで実行しているときに作業するのに役立ちます。

SSHが提供する機能はたくさんあり、そのうちの1つは、ログインしたユーザーが実行できるコマンドを制限することです。

これがどのように行われるかを見てみましょう。

2. authorized_keysファイル

SSHにはいくつかの構成ファイルが付属しており、authorized_keysはその1つです。 SSHサーバーに接続するさまざまなホストとユーザーを管理するために使用します。 この構成ファイルを使用して、リモートサーバーへの自動ログインを設定できます。 authorized_keysファイルは〜/ .ssh/フォルダーにあります。 ただし、 / etc / ssh /sshd_configで別のパスを設定できます。

コマンドを制限するには、authorized_keysファイルを変更する必要があります。 構成例は次のとおりです。

from="192.168.1.10",command="/usr/bin/ls" ssh-rsa AAAAB3NzaC1yc2E...OrsMdr bluelake@Pacific

authorized_keys でのこの構成により、ユーザーはlsコマンドのみを実行するように制限されます。

関連する属性は、fromおよびコマンドです。 from 属性は、SSHサーバーに接続しようとしているクライアントを指定します。 ここでホスト名またはIPを指定できます。 複数のホストがある場合は、それらすべてをコンマで区切って指定できます。 最後に、コマンドは、実行を許可されるコマンドを指定します。 ここで、コマンドへのフルパスを指定する必要があります。 残念ながら、ここで複数のコマンドを指定することはできません

3. スクリプトの使用

これは強力な機能ですが、ユーザーが実行できるコマンドは1つしかないため、実際のユーティリティはありません。

コマンドを指定する代わりに、スクリプトを指定すると、ユーザーがさらにを実行できるようになります。

以下のように、この動作を可能にするように構成を変更してみましょう。

from="192.168.1.10",command="/usr/local/bin/select.sh" ssh-rsa AAAAB3NzaC1yc2E...OrsMdr bluelake@Pacific

唯一の変更点は、コマンドlsselect.shスクリプトに置き換えられたことです。

スクリプトの内容は次のとおりです。

#!/bin/bash
echo "1. ls"
echo "2. ping 8.8.8.8 -c 5"
echo "3. top"
read -p 'Choice: ' choice # Read the choice from user
case $choice in
	1)
		ls
		;;
	2)
		ping 8.8.8.8 -c 5
		;;
	3)
		top
		;;
	*)
		exit
		;;
esac

これは単純なスクリプトです。 5行目でユーザーの入力を読み取り、ユーザーの選択に応じてコマンドを実行します。

これにより、実際にはさまざまなコマンドをより柔軟に実行できます。 これをループ内に置くと、ユーザーは1回のセッションで複数のコマンドを実行できます

4. 結論

これまで見てきたように、SSHユーザーを特定のコマンドの実行に制限することができます。 さらに良いことに、スクリプトを使用することで、ユーザーがより多くのコマンドを選択できるようにし、それによってこの機能の有用性を高めることができます。 さらに、セキュリティの観点から、ユーザーが実行できる特定のコマンドのみを許可しているため、これによりマシンの脆弱性が軽減されます。