DebianサーバーをUbuntu 16.04に移行しています。 Debianサーバー上のパッケージの1つはscponly
です。これはシェルとして機能し、scp接続のみをscpの目的で許可します(ログインまたはscp
バイナリ以外の実行は不可)。詳細は こちら をご覧ください。このパッケージは、少なくとも2回の物理サーバーのアップグレード(OSの無数のアップグレード)を経てDebian上にあり、おそらく2007年頃の日付です。
scponly
は16.04リポジトリにはなく、ランチパッドではコンパイルされません。私はソースからそれをインストールすることはかなり可能ですが、過去10年以上でscpコマンドのみを許可するようにsshを設定するより良い方法があるのではないかと考えました。遠い過去。何か案は?
これによると 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
を追加する必要はないことに注意してください