私は、数人の友人と小さなクライアントのために非常に小さなホスティング会社を始めています。
「クライアント」にサーバー上のファイルを管理する権利を与えたいのですが。 FTPは安全ではないので嫌いです。
したがって、ユーザーにSFTP経由での接続を許可し、SSH経由での接続は許可しないようにしたいと思います。 (私は知っています、私は知っています、SFTPはSSHを使用しています)。しかし、私はただ疑問に思っていました、それは可能ですか?
したがって、サーバーにFTPサービスをインストールする必要はなく、すべてが素晴らしいでしょう!
バージョン4.9以降のOpenSSH(centos 5.xでは使用できませんが、ChrootDirectory機能はバックポートされました)にはinternal-sftp
サブシステムがあります。
Subsystem sftp internal-sftp
そして、他の用途をブロックします:
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ユーザーをsftponly
グループに追加します。 chrootと/
はroot
が所有する必要があるため、ユーザーのホームディレクトリを/home/user
に変更する必要があります。また、ユーザーのシェルとして/bin/false
を設定します。
シェルscponlyがこれを行うものがあります。 chrootもできます。
Sftpを許可するがsshを拒否する偽のシェルであるrsshをチェックアウトする
RSSHの詳細
http://www.pizzashack.org/rssh/
RPM
http://pkgs.repoforge.org/rssh/
Rsshを設定して、sft、scpなどのさまざまな動作を許可/拒否できます。
/ etc/passwdを変更してそのユーザーに偽のシェルを与え、sshを使用できないようにすることができます。
UsePAM yes
という行を見つけてコメントすることを忘れないでください。
#UsePAM yes
これを無効にしないと、リロード/再起動時にSSHサーバーがクラッシュします。 PAMの凝った機能は必要ないので、これは問題ありません。
前述のように、ユーザーShellを/ bin/falseとして指定する方法を使用します。ただし、/ bin/Shellが/ etc/shellsにあることを確認する必要があります。次に、ssh = no ftp = okで動作します。
私もvsftpdを使用してこれを追加します
chroot_local_user = YESを/etc/vsftpd/vsftpd.confに設定して、ftp-erが自分以外の日付を表示できないようにします。
これらの単純な変更の利点は、各ユーザーのssh構成に煩わしい構成がないことです。
scponly
またはrssh
のいずれかをインストールする場合は、選択した一部のユーザーに対してsftpのみを有効にするようにsshを構成することをお勧めします。
rssh
は、jailを構成する必要がない限り、正常に機能します。この場合、CHROOTのマニュアルで提供されている指示に従うのはおかしく、システムの実行可能ファイルとライブラリの大部分を「各ユーザーjail」のすぐ下に「コピー」します。 rssh
シェル自体を含みます。スペースを無駄にする方法です。
scponly
は、jailセットアップの場合にログイン拒否の問題が常に存在することにつながる、設定についての深い理解が必要です。
Jailが適切に機能する「ftp」機能を許可する簡単な方法は、安全なトランザクションとログインのためのSSL/TLSサポートであり、「古くても機能する」VSFTPDを使用することです。VSFTPDは迅速かつクリーンにインストールされ、必要に応じてすべての設定機能を提供します。大事なこと:それはうまくいく!
マウリツィオ。
残念ながら、すべての回答は非常に誤解を招くものです。以下を実行してください。
最初にsftpユーザーとグループsftpを作成します
SFTPファイルのルートとして別のディレクトリを作成します:Sudo mkdir -p /home/sftpdir
#$OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. Port 38250 Port 22 PasswordAuthentication no ChallengeResponseAuthentication no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. UsePAM yes X11Forwarding yes PrintMotd no # Allow client to pass locale environment variables AcceptEnv LANG LC_* #DenyUsers sftpuser # override default of no subsystems Subsystem sftp internal-sftp Match group sftp Match User sftpuser Match LocalPort 38250 ForceCommand internal-sftp ChrootDirectory /home/sftpdir PermitTunnel no AllowAgentForwarding no X11Forwarding no AllowTcpForwarding no
Sshdサービスの再起動とステータスの確認
Sudoサービスsshd再起動
サービスsshdステータス
シェルファイルを作成します。通知メッセージをエコーする実行を追加する
Sudo touch/bin/sftponly echo -e '#!/ bin/sh\necho "このアカウントはSFTPアクセスのみに制限されています。"' | Sudo tee -a/bin/sftponly
実行権限を与えてシェルファイルに追加する
Sudo chmod a + x/bin/sftponly echo "/ bin/sftponly" | Sudo tee -a/etc/shells
最後にテストすると、接続できなくなります。
SSHキーと基本的な冗長性を備えたSFTPクライアントを使用するためのテンプレート:
sftp -v -oPort = $ RANDOM_PORT -i〜/ .ssh/$ SSH_KEY.pem sftpuser @ $ Host