問題:
サーバーへのrootアクセス権がなく(つまり、システム全体のサーバー構成を変更できない/変更したくない)、別のIDファイルでscpを使用したい(たとえば、.ssh/id_rsa_for_scp
)サーバーからいくつかのファイルのダウンロードを自動化しますが、同じkeyを使用してssh経由でサーバーにアクセスしたくありません。
キーファイルをサーバーにコピーした後:
ssh-copy-id -i ~/.ssh/id_rsa_for_scp [email protected]
(例を簡略化するために、クライアントのマシン〜/ .ssh/configがすでに構成されていると想定します。~/.ssh/config
の詳細については、man ssh_config
を実行してください)
Host testmachine
Hostname 192.168.1.1
User legendaryuser
BatchMode yes
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa_for_scp
サーバーの/home/legendaryuser/.ssh/authorized_keys
ファイルを編集する必要があります。
から:
ssh-rsa AAAAAC3nZCXExxHUEBR...
To:(このバージョンではダウンロードとアップロードが可能です)
command="if [[ \"$SSH_ORIGINAL_COMMAND\" =~ ^scp.? ]]; then $SSH_ORIGINAL_COMMAND ; else echo Access Denied; fi" ssh-rsa AAAAAC3nZCXExxHUEBR...
Scpを「ダウンロード専用モード」に限定し、特定のディレクトリのファイルのみに限定するには、次のようにします。
command="if [[ \"$SSH_ORIGINAL_COMMAND\" =~ ^scp[[:space:]]-f[[:space:]]/full/path/to/dir/.? ]]; then $SSH_ORIGINAL_COMMAND ; else echo Access Denied; fi" ssh-rsa AAAAAC3nZCXExxHUEBR...
最後に、安全のために、キーにいくつかの制限を追加します。
command="if [[ \"$SSH_ORIGINAL_COMMAND\" =~ ^scp[[:space:]]-f[[:space:]]/full/path/to/dir/.? ]]; then $SSH_ORIGINAL_COMMAND ; else echo ERRO Access Denied; fi",no-pty,no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAAC3nZCXExxHUEBR...
次のコマンドを実行すると、authorized_keys
ファイルの詳細を確認できます。
man sshd
Ps:特定のIPアドレスまたはネットワークからのキーの使用を制限するためにfrom=xxx.xxx.xxx.xxx
を追加することもできます。
Pps:私の英語は申し訳ありませんが、私はネイティブスピーカーではありません。