web-dev-qa-db-ja.com

ssh構成ファイルでSCPまたはSFTPを使用していますか?

おそらく私のgoogle-fooがここで失敗しています... SFTPまたはSCPを使用してターミナル経由でmysqlダンプファイルを接続し、ssh構成ファイルを使用してリモートサーバーにアップロードしたいと思います。私が見つけたドキュメントによると、私はこれを行うことができるはずです:

sftp -F db.sql.gz [email protected] /tmp

私は私の設定でエイリアスも疲れました:

sftp -F db.sql.gz myalias /tmp

上記の2つを実行すると、可能なコマンド-Fそれらの1つであること。

私はすでにローカル設定のショートカットを使用してssh経由でうまく接続できるので、うまくいくことがわかります:

ssh myalias

**注:秘密鍵と公開鍵のペアを使用して接続しているため、パスワードを入力する必要はありません。キーペアにはパスフレーズが関連付けられていますが、OS Xキーチェーンには、初めて接続したときに記憶されていました。

...だから私は何が間違っているのかわかりません。

44
Danny Englander
  1. ヘルプテキストから:「... [-F ssh_config] ...

    上記によると、-Fには1つの引数が必要です。OpenSSH構成ファイルへのパス、~/.ssh/configなどです。しかし、代わりにgzip圧縮されたSQLダンプを提供しています。

    プレーンなssh myaliasはすでに機能しているので、ここで-Fオプションも必要ありません。 sftp myaliasだけがサーバーに接続します。

  2. ただし、OpenSSH sftpクライアントは、あなたがしようとしているようなファイルのアップロードをサポートしていません。ファイルのダウンロード(構文Host:pathを使用)またはインタラクティブモードでのみ機能します。アップロードするには、インタラクティブモードを使用する必要があります...

    $ sftp myalias
    sftp> cd /tmp
    sftp> put db.sql.gz
    

    ...またはscpツール:

    scp db.sql.gz myalias:/tmp
    

    または

    scp db.sql.gz [email protected]:/tmp
    

(sftpには、-bを使用してファイルからコマンドを読み取ることができるバッチモードがありますが、単一のアップロードにはscpを使用する方が簡単です。)

他のSFTPクライアントもあります– lftpはインタラクティブな使用に適していますが、curlは自動化が簡単です。バックアップなどの場合、rsyncを使用することもできます(独自のプロトコルを実行しますが、SSH内で実行されます)。

49
user1686

以下のForwardAgent構成が原因の問題、

Host dockervm
   HostName x.x.x.x
   User root
   Preferredauthentications publickey
   ForwardAgent yes

私の場合、ssh設定の「ForwardAgent」がscpをハングさせたことが原因でした。コメントアウトしたら、私のために働きました。

また、ForwardAgent行がコメント化されたファイルのコピーを作成し、scp -Fを使用して機能させることもできます。

0
MohanBabu