web-dev-qa-db-ja.com

SSHなしのLinuxでの安全なファイル転送?

安全な方法で、インターネットを介してマシン間でファイルを転送したいと思います。どちらのマシンにもLinuxが搭載されています(「サーバー」はUbuntu 12を使用し、「クライアント」はMint 14を使用します)。サーバーにsshを許可したくないので、クライアントがサーバー上のファイルを開いて読み取ることができるようにしたいのですが、変更/消去できません。クライアントがファイルをサーバーにコピー[またはそこでファイルを作成]し、サーバーからコピーすることが許可されています。

上記の方法でサーバー内のいくつかのディレクトリを共有したいと思います。最後に、GUIモードなどの簡単な方法でクライアントのファイルにアクセスしたいのですが、シェルを使用せず、代わりにWindowsのようなスタイルを使用します(リモートフォルダーがローカルフォルダーの場合のように、アクセスを制限します。上記で説明)。

私にとって安全であるということは、接続を暗号化する必要があり、ログインでいくつかの秘密/公開鍵スキームを使用できることを意味します。

私にとって最良の解決策は何ですか?私の「仕様」に合うSFTP構成を見つけようとしていますが、アクセスの制限が「独特」すぎます... sshを許可せずにSFTPが機能するかどうかはわかりません。

助けてくれてありがとう...

編集:あなたの助けをどうもありがとう。本当に感謝しています!私はすべての答えを評価し、最良の解決策を見つけようとします。今では、アクセス/特権が制限されているユーザーを作成し、このユーザーのみにSSH/SFTPの超安全な実行を許可することが最善の方法だと思います... sshを回避するための「ハッキング」は実際に事態を悪化させる可能性があります(安全性が低い) )。私の「論理」が少し乱されたので、私の質問は少し混乱しています。今、私はよりはっきりと見ることができます...

2
guipy

古き良きファイル転送プロトコル(FTP)は、ファイルを転送するために発明されました。安全な方法で使用するには、ftps(sftpではなくftp over ssl)を使用するか、セキュリティのためにvpn接続を設定します。

Vsftpd + sslを検索すると、 これが最初の結果です これは妥当な出発点のようです。

4

以下はシンプルで素晴らしいです:

python -m SimpleHTTPServer 8888

これにより、現在のディレクトリの新しいhttpファイルサーバーが起動します。現在のディレクトリにfooという名前のファイルがあるとすると、次のようにダウンロードできます。

wget http://your.ip.here:8888/foo
2
nullne co

SSLを介してWebDAVファイルシステムをセットアップできます。

2
toppledwagon

暗号化されておらず、認証がなくても、任意のプロトコルを使用できます。データを送信する前に、データに署名して暗号化するだけです。

gpg --armor --local-user senderkey --recipient recipientkey --sign --encrypt cleartextfile

ターゲットでのログインの可能性について偏執的である場合は、次の組み合わせを使用できます。

  1. netfilter(iptables)によってログに記録される(接続を開かない)ネットワークイベント
  2. ロギングによってトリガーされ、何らかのWebサーバーからファイルを取得するwget呼び出し(OpenPGPファイルはおそらく常に同じ名前である必要があります)
2
Hauke Laging

HTTPSプロトコルを使用できます。これはnginxの簡単なインストールです。

apt install nginx
cd /etc/nginx/ ; openssl req -x509 -newkey rsa:2048 -keyout site.key -out site.crt -days 365 -nodes

vim /etc/nginx/sites-enabled/default 
server {
    listen 443 ssl default_server;
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    ssl_certificate     site.crt;
        ssl_certificate_key site.key;
    server_name _;
    location / {
        try_files $uri $uri/ =404;
    }
}

nginx

この後、ファイルを/ var/www/htmlにコピーし、サーバーからダウンロードします。ユーザーが使用するためにクローズアクセスが必要な場合 基本認証 。ファイルをアップロードしたい場合は、単純な PHP-script を作成できます。

1
Quarind

ユーザーのauthorized_keysファイルにcommand="..."ディレクティブを追加することで、shouldユーザーをsftpだけに制限できるように思えます。 $ workでこれを行って、一部のユーザーアカウントをrsyncのみに制限しています。

http://troy.jdmz.net/rsync/index.html に、rsyncのプロセスを説明するウィットアップがあります。

1
gsiems

WebDAV を試してください。これは、NAS上のファイルにアクセスするための私のお気に入りのプロトコルです。

1
Radoo

「サーバーでSSHアクセスを制限する方法はありますか?そうすると、クライアントだけがssh/sftpを実行できますか?」

承知しました。これには、強力なパスワード/パスフレーズまたはキーベースの認証で十分です。パラノイアをさらに甘やかしたい場合は、アクセスが必要なIPを除いてポート22をファイアウォールでオフにするか、2要素認証用にGoogle認証システムのワンタイムパスワードPAMモジュールを追加します。

サーバーへのリモートアクセスに関する業界のゴールドスタンダードとして、適切に保護されたSSHは、「SSHなし」という唯一の要件に基づくハッキーな回避策よりもはるかに安全になります。

1
ceejayoz