web-dev-qa-db-ja.com

SSHを使用してローカルコンピューターからサーバーにフォルダーを正しくコピーするにはどうすればよいですか? scpコマンドがエラーになるのはなぜですか?

[〜#〜] ssh [〜#〜]からというツールを使用してWebサーバーにログインしていますMobaXterm(これはPuTTYのようなものですが、高度な機能があるため、これはそれほど重要ではありません...)

私の問題は、ローカルコンピューター(Windows)からこのサーバーの特定のディレクトリ(Linux)にディレクトリを送信することです。

だから私はここに示すようにscpコマンドを使用しようとしています: http://www.hypexr.org/linux_scp_help.php =

私はこのようにしています:

-jailshell-4.1$ scp -r C:\Users\Andrea\Documents\Betrivius\candycane-0.9.6\candycane /home6/XXX/public_html

ssh: Could not resolve hostname C: Name or service not known

しかし、ご覧のとおり、エラーが発生します。

どうして?何が欠けていますか?この問題を解決するにはどうすればよいですか?

Tnx

2
AndreaNobili

おそらく、これをローカルのMobaXtermシェル(つまり、Windowsマシンのローカル)で実行しています。その場合、scpコマンドの構文を更新して、その環境に対応する必要がありますが、構文は正しくありません。

MobaXtermは、マウントポイント/drives/Xを介してシェルのローカルドライブへのアクセスを提供します。XはWindowsのドライブ文字です。

さらに、環境に関係なく、scpの(簡略化された)一般的な構文は次のとおりです。

scpの使用:

scp [[user@]Host1:]/path[/filename] [[user@]Host2:]/path/[filename]

最初のシーケンス([[user@]Host1:]/path[/filename])は「FROM」セクションです。コピーするファイルのソース。 2番目は「TO」です。目的地。大括弧はオプションの引数を示します。

これは実際には、標準のcpコマンドのssh対応バージョンです。 :の前のセクションには、ssh固有の情報と、cp操作に関連する後の情報が含まれています。

ユーザー:

userのデフォルトは、現在のローカルユーザー名です。ソースと宛先の両方で正しいユーザー名であれば、省略できます。

ホスト:

Hostのデフォルトはローカルコンピューター(localhost)です。したがって、ローカルマシンとの間でコピーを行っており、使用するlocalhostのユーザー名が現在のユーザーである場合は、ローカルファイルの引数を省略できます。

ファイルパス:

path/filenameのデフォルトは指定されたユーザーのホームディレクトリであり、必要に応じて省略できます。あなたの状況のように再帰的なコピーをするとき、ファイル名は省略できます-その場合はパスを指定してください。一般に、フルパスとファイル名はFROMセクションで指定され、パスはTOセクションでのみ指定されます(デフォルトでは同じファイル名が維持されます)。

ユーザー名およびリモートPCホスト名としてremoteuserおよびremotePCを使用しています。正しい名前に置き換えます。

あなたの例の正しい構文:

 scp -r "/drives/C/Users/Andrea/Documents/Betrivius/candycane-0.9.6/candycane" remoteuser@remotePC:/home6/XXX/public_html

追加の詳細(引数、その他の使用情報)については、コマンドman scpまたは this site を使用してください。

GUIオプション

または、MobaXtermは、ssh経由でリモートホストに接続したときに、双方向のファイル転送をドラッグアンドドロップで提供するグラフィカルファイルブラウザ(構成オプションに基づいてsftpまたはscpで構築)を提供します。 詳細はこちら

3
Argonauts

そのWebサーバーがWindowsマシンに直接接続する方法(SSHデーモンの実行と転送されるポートを必要とするポート22)がない限り、Windows側からSCPを呼び出す必要があります。 MobaXTermはsshクライアントです。SCPが組み込まれているかどうかはわかりませんが(個人的には使用しません)、コマンドラインクライアントでもGUIクライアントでも、SCPクライアントを使用するのが最善の解決策です。

Windowsでかなり人気のあるクライアントは WinSCP です。これは、Windowsを使用する以外に選択肢がないときの私のgotoクライアントです。

1
Chip Shadd

ウィンドウズでは、次のコマンドが私のために働きました:

scp -r "ABC" shivam @ remote_server:/ media/External/shivam。

実行する前に、必要なフォルダーが存在するフォルダーに移動します

0
SHIVAM RAJ

答える

Scpコマンドがエラーになるのはなぜですか?

、エラー

ssh: Could not resolve hostname C: Name or service not known

、および使用されるコマンドは

scp -r C:\Users\Andrea\Documents\Betrivius\candycane-0.9.6\candycane /home6/XXX/public_html

私は言うでしょう:

構文C:\Users\....は間違っています。このコンテキストでは、パスを説明する2つの可能性があります。

  1. foo/bar/...fooがパスから見えるディレクトリ(フォルダー)であることを意味します。現在のパス(pwd)またはパスの環境変数(echo $PATH)。

  2. /foo/bar/...は、fooがファイルシステムのルートにあるディレクトリ(フォルダー)であることを意味します。

最初のオプションを使用したため( "C:"の前に "/"がないため)、シェルはパスでC:を検索しますが、見つかりません。その結果、別の構文[user@]Host1:/path/..../filenameに一致しようとします。この状況では、C:のIPアドレスが見つからないため、sshは文句を言います(C:はホスト名であると考えられているため)。ホスト名に対応するIPアドレスを見つけることは "hostname resolution"と呼ばれます。ここではこの解決は失敗しているため、エラーを理解しています。

0