web-dev-qa-db-ja.com

ポート番号を指定したscp

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

私は試した:

scp -p 80 [email protected]:/root/file.txt .

しかし、このエラーを得た:cp: 80: No such file or directory

Scpコマンドでポート番号を指定する方法

636
One Two Three

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

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

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

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

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

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

(強く支持された)コメントの1つを更新して対処するために取っておく : 

scpオプションの順序についてのAbdullのコメントに関して、彼が示唆していること:

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

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

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

-rコマンドラインオプションはこれ以上引数を取りませんので、some_directoryは「オプション引数ではない最初の非オプションパラメータ」です。したがって、getopt(1)のマニュアルページで明確に説明されているように、それに続くすべての後続のコマンドライン引数(すなわち-P 80 ...)は、オプションではない(およびオプションではない引数)と見なされます。

したがって、実際には、これはgetopt(1)がオプションの最後と、テキストbingがグレーで続くことで区切られたパラメータの最初で示される例を見る方法です。

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

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

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

man 1 getopt
1163

もう一つヒントがあります。 scpコマンドの後に '-P'オプションを付けてください。あなたのマシンが2番目のマシン(別名destination)であるかどうかに関係なく。例:

scp -P 2222 /absolute_path/source-folder/some-file [email protected]:/absolute_path/destination-folder
50
Gooshan

あなたは-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 [email protected]:/root/file.txt .

または

scp short:/root/file.txt .

Ssh、scp、rsync、gitなどを使って "Host"行に何でも使用できます。

設定ファイルで使用できるたくさんの設定オプションがあります。参照:

man ssh_config

40
Mike

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

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

これは時折使用するためだけのものです。スケジュールに基づいて繰り返し実行される場合は、rsyncとcronのジョブを使用してそれを実行してください。

25
Marian Zburlea

scp helpはportが大文字の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

お役に立てれば。

4
D D

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

ホストからのファイルのコピー:scp user@Host:/directory/SourceFile TargetFile

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

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

2
AJ.

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

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

アリアリ

1
Hasan Barary

これは-Pスイッチでportを指定することで達成できます。

scp -i ~/keys/yourkey -P2222 file ubuntu@Host:/directory/
1
Vaseem007

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

scp -P 3838 /the/source/file [email protected]:/destination/file
0
Turan Zamanlı