おそらく私の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キーチェーンには、初めて接続したときに記憶されていました。
...だから私は何が間違っているのかわかりません。
ヘルプテキストから:「... [-F ssh_config] ...
」
上記によると、-F
には1つの引数が必要です。OpenSSH構成ファイルへのパス、~/.ssh/config
などです。しかし、代わりにgzip圧縮されたSQLダンプを提供しています。
プレーンなssh myalias
はすでに機能しているので、ここで-F
オプションも必要ありません。 sftp myalias
だけがサーバーに接続します。
ただし、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内で実行されます)。
以下のForwardAgent構成が原因の問題、
Host dockervm
HostName x.x.x.x
User root
Preferredauthentications publickey
ForwardAgent yes
私の場合、ssh設定の「ForwardAgent」がscpをハングさせたことが原因でした。コメントアウトしたら、私のために働きました。
また、ForwardAgent行がコメント化されたファイルのコピーを作成し、scp -Fを使用して機能させることもできます。