ポート番号が指定されたscp


794

リモートサーバーからローカルマシンにファイルをscpしようとしています。ポート80のみにアクセスできます。

私は試した:

scp -p 80 username@www.myserver.com:/root/file.txt .

しかし、このエラーが発生しました: cp: 80: No such file or directory

scpコマンドでポート番号を指定するにはどうすればよいですか?


33
港は首都でなければなりません-P 80
Eliethesaiyan 2016年

回答:


1407

sshとは異なり、scpは小文字のpではなく大文字のPスイッチを使用してポートを設定します。

scp -P 80 ... # Use port 80 to bypass the firewall, instead of the scp default

小文字のpスイッチは、時刻とモードを保持するためにscpで使用されます。

以下は、scpのmanページからの抜粋で、2つのスイッチに関するすべての詳細と、scpに大文字のPが選択された理由の説明が含まれています。

-P portリモートホストで接続するポートを指定します。-pはrcp(1)のファイルの時間とモードを保持するためにすでに予約されているため、このオプションは大文字の「P」で書かれていることに注意してください。

-p変更時間、アクセス時間、および元のファイルのモードを保持します。

(非常に賛成された)コメントの1つに対処するために更新して脇に置きます

scpオプションの順序に関するアブドゥルのコメントに関して、彼が示唆していること:

scp -P80 -r some_directory -P 80 ...

...、オプションとパラメーターが点在しています。getopt(1)パラメータは、オプションの後に来る必要があり、それらに点在してはならないことを明確に定義します。

getoptで呼び出されるパラメーターは、getoptが解析を行う方法を変更するオプション(構文のオプションとoptstring)と、解析されるパラメーター(構文のパラメーター)の2つの部分に分けることができます。2番目の部分は、オプション引数ではない最初の非オプションパラメータから、または最初の '-'の後に始まります。最初の部分に「-o」または「--options」オプションが見つからない場合、2番目の部分の最初のパラメーターが短いオプション文字列として使用されます。

-rコマンドラインオプションはそれ以上引数を取らないため、some_directory「オプション引数ではない最初の非オプションパラメータ」です。したがって、getopt(1)manページに明記されているように、それに続くすべてのコマンド行引数(つまり、-P 80 ...)は、非オプション(および非オプション引数)と見なされます。

したがって、実際には、これはgetopt(1)、オプションの終わりと、灰色の後続のテキストbingで区切られたパラメーターの始まりを示した例の見え方です。

scp -P80 -r some_directory -P 80 ...

これはscp動作とは関係なく、POSIX標準アプリケーションgetopt(3)がC関数のセットを使用してコマンドラインオプションを解析する方法とはすべて関係があります。

コマンドラインの順序付けと処理に関する詳細については、次getopt(1)を使用してマンページをお読みください。

man 1 getopt

88
ところで、scp正しいオプションの順序を要求します:scp -r some_directory -P 80 ...機能しません----- scp -P 80 -r some_directory ...機能します。
Abdull 2014

9
一般的にLinuxでは、コマンドの後にオプションが続き、その後に指示/値が続きます
Gary

2
@アブドルは、scp -r -p 50193 / path / to / directoryも同様に機能することに注意してください。ファイルパスパラメータは、-r再帰オプションに関連付けられていません。
ベンジャミン

6
@ベンジャミンポート50193を使用するつもりでない限り、「p」は大文字にする必要があります。
なし

1
@アブドル:askubuntu.com/a/307078/37574-Pパラメーターの順序を説明する回答があります。基本的に、ポートはホストの前に移動する必要があります。これにより、あいまいさがなくなり、-P両方のホストがリモートの場合に2つのパラメーターが許可されます。
mwfearnley 2016年

70

1つの追加のヒント。sshを実行するマシンが2番目のマシン(宛先)であるかどうかに関係なく、scpコマンドの後に「-P」オプションを配置します。例:

scp -P 2222 /absolute_path/source-folder/some-file user@example.com:/absolute_path/destination-folder

46

あなたは何がより涼しいか知ってい-Pますか?何もない

このサーバーを数回以上使用する場合は、次の~/.ssh/configようなエントリを含むファイルをセットアップ/作成します。

Host www.myserver.com
    Port 80

または

Host myserver myserver80 short any.name.u.want yes_anything well-within-reason
    HostName www.myserver.com
    Port 80
    User username

それからあなたは使うことができます:

scp username@www.myserver.com:/root/file.txt .

または

scp short:/root/file.txt .

ssh、scp、rsync、gitなどの「ホスト」行で何でも使用できます

構成ファイルで使用できる多くの構成オプションがあります。以下を参照してください。

man ssh_config


3
scp -3異なるポートでsshリスナーを使用するサーバーとの間のサーバーの使用を許可する唯一のソリューション。scp -3 -P 123 server1:/file -P 456 server2:/fileまたは同様の代替手段が機能しない場合、scpは両方のサーバーで同じポートを想定しました
user88595

28

標準とは異なるポートを使用しており、次のようにファイル間でファイルをコピーします。

scp -P 1234 user@[ip address or host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine

これは、使用頻度が低い場合にのみ使用します。スケジュールに基づいて繰り返し実行される場合は、rsyncおよびcronジョブを使用して実行する必要があります。


7

scpコマンドで別のポートを使用するには、次のように大文字のPを使用します

scp -P port-number source-file/directory user@domain:/destination

うんアリ


6

scp helpは、ポートが大文字のPで指定されていることを示しています。

~$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

お役に立てれば。


2

ホストにファイルをコピーしています: scp SourceFile remoteuser@remotehost:/directory/TargetFile

ホストからファイルをコピーしています: scp user@host:/directory/SourceFile TargetFile

ホストからディレクトリを再帰的にコピーしています: scp -r user@host:/directory/SourceFolder TargetFolder

:ホストがポート22以外のポートを使用している場合は、-Pオプションで指定できます。 scp -P 2222 user@host:/directory/SourceFile TargetFile


6
ちょうどノートは十分でしょう
愚かな

2

これは、-Pスイッチを介してポートを指定することで実現できます。

scp -i ~/keys/yourkey -P2222 file ubuntu@host:/directory/

2

ローカルファイルをサーバーにコピーする必要がある場合(ポートを指定)

scp -P 3838 /the/source/file username@server.com:/destination/file

0

これが完璧な答えを探している誰かを助けることを願っています

ポートが定義されているサーバーから別のサーバーまたはローカルマシンにフォルダーまたはファイルをコピーする

  1. 管理者権限を持つディレクトリ、できればファイルのコピー先となるマシンのホームディレクトリに移動します。
  2. 以下のコマンドを記述します

scp -r -Pポートuser @ IP_address:/ home / file / pathDirectory。

**Note:** The last . on the command directs it to copy everything in that folder to your directory of preference

0

答えはたくさんありますが、シンプルに保つことができるはずです。SSHがリッスンしているポートを確認し、それを定義します。これが問題を再現するために使用したものです。

scp -P 12222 file.7z user@193.168.XX:/ home / user / Downloadsうまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.