web-dev-qa-db-ja.com

scpは許可するがsshは許可しない-scponlyなし

DebianサーバーをUbuntu 16.04に移行しています。 Debianサーバー上のパッケージの1つはscponlyです。これはシェルとして機能し、scp接続のみをscpの目的で許可します(ログインまたはscpバイナリ以外の実行は不可)。詳細は こちら をご覧ください。このパッケージは、少なくとも2回の物理サーバーのアップグレード(OSの無数のアップグレード)を経てDebian上にあり、おそらく2007年頃の日付です。

scponlyは16.04リポジトリにはなく、ランチパッドではコンパイルされません。私はソースからそれをインストールすることはかなり可能ですが、過去10年以上でscpコマンドのみを許可するようにsshを設定するより良い方法があるのではないかと考えました。遠い過去。何か案は?

8
abligh

これによると serverfault.com answer SSHを使用したSCPを許可するが実際のログインは許可しない 、現在サポートされている方法の1つはrsshリポジトリーから入手可能なuniverseを使用することです:

Sudo apt-add-repository universe

Sudo apt-get install rssh

SCPを許可するには、/etc/rssh.confファイルの対応する行のコメントを解除する必要があります(さらに、有効にする他のプロトコルも):

allowscp
#allowsftp
#allowcvs
#allowrdist
#allowrsync
#allowsvnserve

次に、ユーザーのログインシェルをrsshシェルに変更するだけです。

Sudo chsh -s /usr/bin/rssh steeldriver

その後、SCPが機能することをテストできます。

$ scp steeldriver@localhost:~/Pictures/somefile.png ./
steeldriver@localhost's password: 
somefile.png                                                               100%   34KB  33.7KB/s   00:00    
$

ただし、SSHは次のような拒否メッセージで失敗するはずです。

$ ssh steeldriver@localhost
steeldriver@localhost's password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-88-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Jul  6 16:23:47 2016 from localhost

This account is restricted by rssh.
Allowed commands: scp

If you believe this is in error, please contact your system administrator.

Connection to localhost closed.

/ etc/shellsの許可されたログインシェルのリストに/usr/bin/rsshを追加する必要はないことに注意してください

14
steeldriver