9

SFTP経由でファイルをバックアップするスクリプトを作成しようとしています。問題は、パスワードが必要であり、SFTPにパスワードを手動で指定する方法がないことです。公開鍵を使用してパスワードを要求しないと聞いたことがありますが、リモートサーバーにSSHで接続し、一部の構成ファイルを変更できる必要がありますが、これはできません。

現在、私の解決策はcURLを使用することですが、それは安全ではありません(通常のFTPを使用します)。ファイルも調べました.netrcが、SFTPではなくFTPのようです。sftpのパスワードを手動で指定するにはどうすればよいですか?

4

6 に答える 6

7

Lftp では、ftp と sftp の両方にパスワードを指定でき、公開鍵はまったく必要ありません。sh 同期スクリプトは次のようになります。

#!/bin/sh
# Define folders
THEFOLDER='/mnt/my/folder'
# List files
THEFILES=`ls -p $THEFOLDER | grep -v "/"`

for file in $THEFILES
do
  echo "Processing $file"
  lftp -u login,password -e "put $THEFOLDER/$file;quit"  theftp/sub/folder
done
于 2012-04-30T07:26:56.873 に答える
6

マニュアルに記載されているように、cURLはsftpをサポートできます。

USING PASSWORDS

 FTP

   To ftp files using name+passwd, include them in the URL like:

        curl ftp://name:passwd@machine.domain:port/full/path/to/file

   or specify them with the -u flag like

        curl -u name:passwd ftp://machine.domain:port/full/path/to/file

 FTPS

   It is just like for FTP, but you may also want to specify and use
   SSL-specific options for certificates etc.

   Note that using FTPS:// as prefix is the "implicit" way as described in the
   standards while the recommended "explicit" way is done by using FTP:// and
   the --ftp-ssl option.

 SFTP / SCP

   This is similar to FTP, but you can specify a private key to use instead of
   a password. Note that the private key may itself be protected by a password
   that is unrelated to the login password of the remote system.  If you
   provide a private key file you must also provide a public key file.
于 2012-12-27T19:45:32.897 に答える
4

また、シェルからすぐに呼び出せる python (paramiko モジュール) の使用を検討することもできます。

モジュールをインストールする

pip install paramiko

FTP アップロード スクリプトの例

import paramiko

username = 'my_username'
password = 'my_password'

transport = paramiko.Transport((server, 22))
transport.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(transport)    

local_filename = '/tmp/filename'
remote_filename = 'MyFiles/temp.txt'

sftp.put( local_filename, remote_filename )
于 2015-02-05T00:08:01.570 に答える
3

sftp がパスワードを要求するのを待ってから送信する Bash プログラム:

#!/bin/bash
expect -c "
spawn sftp username@your_host
expect \"assword\"
send \"your_password_here\r\"
interact "

というファイルに入れてくださいsftp_autologin.sh。は\rコマンドを実行するために sftp に送信します。パスワードに 'p' を含めません。これは、大文字のシステムと小文字のシステムがあるためです。expect は sftp コマンドを生成します。文字列「assword」が表示されるのを待ち、コマンドを送信します。その後、終了します。

これを機能させるには:

  1. 期待してインストールしてください。5.44.1.15を使用しています
  2. インタラクティブ モードでボックスに sftp し、パスワードを入力できることを確認してください。
  3. この bash スクリプトに実行権限があることを確認してください。

次に実行します。

chmod +x sftp_autologin.sh
./sftp_autologin.sh

パスワードの入力を求めるプロンプトを表示せずに、sftp コマンドラインに移動する必要があります。

それは安全ではありませんか?

これは、実行できる最も安全でないコマンドに関するものです。コマンドラインの履歴にパスワードを公開し、「ps」出力を読み取ることができる他の人にパスワードを公開し、基本的にパスワードの目的全体をまとめて無効にします。

しかし、詐欺の火事に関する別のログは何ですか。年間の被害者の損失は約 2,500 億ドルにすぎません。500bに行きましょう。

これにより、sftp シェルでいくつかのコマンドが自動的に実行され、完了すると自動的に終了します。

#!/bin/bash
expect -c "
spawn sftp myuser@myserver.com
expect \"assword\"
send \"yourpassword\r\"
expect \"sftp\"
send \"get your_directory/yourfilename.txt\r\"
expect \"sftp\"
send \"exit\r\"
interact "
于 2014-11-11T20:43:27.103 に答える
2

公開鍵を使用するために、「構成ファイル」を変更する必要はありません。公開鍵のコピーを、ssh が認識している場所 (通常は~/.ssh/authorized_keys) に残すだけで済みます。これは sftp で行うことができます。サーバー上にauthorized_keysファイルを確立していない場合は、id_rsa.pubファイルをその場所に置くだけです。

于 2011-03-11T04:24:42.710 に答える
2

コマンドラインから ssh / scp または sftp にパスワードを指定することはできません。パスワードを要求せずに接続する唯一の方法は、公開鍵認証を使用することです。

構成ファイルを変更するためにサーバーに ssh できないと言っていますが、サーバーに sftp できる場合は、おそらく公開鍵をアップロードできます。

公開鍵は、ホーム ディレクトリの .ssh ディレクトリの下に置く必要があります。

于 2011-03-11T04:25:47.873 に答える