キーファイルを使用して、あるサーバーから別のサーバーにデータをSFTP転送するにはどうすればよいですか


25

scpはできません。他のサーバーはsftp接続のみを使用します。

現在、私はやろうとしている

sftp jay@server.name.com:/files> put -r ~/

-i keyname動作せず、単にで解決しillegal option -- iます。

回答:


34

試してください:

sftp -o "IdentityFile=keyname" jay@server.name.com

-o有効なオプションを渡すために使用できます~/.ssh/config


ばっちり成功。ありがとう!どうすれば普通にそこに保管できますか?
ジェイ

「普通に保管する」とはどういう意味かわかりません。あなたが欲しいことを意味場合はIdentityFile常に自動的に与えられることにオプションを、チェックアウトUtahJarheadにそれを置くことについての答えを~/.ssh/config
Celada

4

従来の方法を使用して、PUBLICキーをサーバーにコピーします。

サーバー上:

  • .ssh存在しない場合は作成します。
[[!-d "$ {HOME} /。ssh"]] && mkdir -p "$ {HOME} /。ssh"
  • 公開鍵を実装します。
cat /path/to/public_key.pub >> "$ {HOME} /。ssh / authorized_keys"
  • 適切な許可を設定します。OpenSSHは、問題のファイルの権限について非常に分析的です。
chmod go-rwx "$ {HOME}" "$ {HOME} /。ssh / authorized_keys"

その後、PRIVATEキーを使用してクライアントからログインできるようになります。転送を自動化するには、バッチファイルを使用します。バッチファイルは、実行するコマンドのリストを含む単なるテキストファイルです。

echo "put filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile = / path / to / private_key user @ host

または、〜/ .ssh / configファイルをssh_config形式で作成して、今後これを入力するだけでも構いません。

sftp -b /tmp/batchfile.txt host

サンプル内容 ~/.ssh/config

ホストthe_hostname
    ユーザーuser_name
    IdentityFile / path / to / private_key

次のバッチでこれを試しますが、上記の解決策はうまくいきました。
ジェイ

1

ec2でsftpをセットアップする場合は、この記事が役立ちます。


すみません、本当にしませんでした。
ジェイ

1
この「答え」は、質問に貢献するものは何もありません。さらに悪いことに、それはいつか消えるページへの単なるリンクです。
ジョン市長

0

最近この問題に遭遇しましたが、Macbookのデフォルトのターミナル設定で次のように機能しました。

sftp -i ./privateFilePath.key username@url.com

保護されていないプライベートキーファイルで昇格される可能性があることに注意してくださいその場合、このコマンドを実行して、他の人が自分の秘密鍵にアクセスできないようにする必要があります。

chmod 600 privateFilePath.key 

場合によっては、コマンドの前にsudoを配置する必要があります。これは、adminで保護されたディレクトリで作業している場合のみです。

お役に立てば幸いです:)


質問で-iオプションが機能していないと言われたときに、なぜこれが役立つと期待するのですか?
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.