リモートサーバーから自分のローカルマシンにファイルをscpしようとしています。ポート80だけがアクセス可能です。
私は試した:
scp -p 80 [email protected]:/root/file.txt .
しかし、このエラーを得た:cp: 80: No such file or directory
Scpコマンドでポート番号を指定する方法
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
もう一つヒントがあります。 scpコマンドの後に '-P'オプションを付けてください。あなたのマシンが2番目のマシン(別名destination)であるかどうかに関係なく。例:
scp -P 2222 /absolute_path/source-folder/some-file [email protected]:/absolute_path/destination-folder
あなたは-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
私は標準と異なるポートを使用しており、ファイル間でファイルを次のようにコピーします。
scp -P 1234 user@[ip address or Host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine
これは時折使用するためだけのものです。スケジュールに基づいて繰り返し実行される場合は、rsyncとcronのジョブを使用してそれを実行してください。
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
お役に立てれば。
ファイルをホストにコピー: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
scpコマンドで別のポートを使用するには、次のように大文字のPを使用します。
scp -P port-number source-file/directory user@domain:/destination
アリアリ
これは-P
スイッチでportを指定することで達成できます。
scp -i ~/keys/yourkey -P2222 file ubuntu@Host:/directory/
ローカルファイルをサーバーにコピーする必要がある場合(ポートを指定)
scp -P 3838 /the/source/file [email protected]:/destination/file