[解決済み】ポート番号を指定したscp
質問
リモートサーバーから私のローカルマシンにファイルを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で使用されます。
この2つのスイッチに関するすべての詳細と、scpに大文字のPが選ばれた理由については、scpのmanページからの抜粋をご覧ください。
<ブロッククオート-P port リモートホストの接続先ポートを指定します。このオプションは大文字の'P'で書かれていることに注意してください,なぜなら-pはすでに rcp(1) でファイルの時刻とモードを保存するために予約されています。
-p 元のファイルからの変更時間、アクセス時間、モードを保持します。
ボーナスチップ : SSHデーモンがSSH接続を受け入れるために使用しているポートを確認するにはどうすればよいですか?
この質問には
netstat
ユーティリティを使用すると、次のようになります。
sudo netstat -tnlp | grep sshd
または、はるかに読みやすい単語ベースのnetstatオプション名を使用します。
sudo netstat --tcp --numeric-ports --listening --program | grep sshd
sshデーモンがデフォルト値でリスニングポートを設定していると仮定すると、以下のような出力が得られます(スクロールしなくても表全体が見えるように、列間の空白を少し削っています)。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State ID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 888/sshd: /usr/sbin
tcp6 0 0 :::22 :::* LISTEN 888/sshd: /usr/sbin
重要なお知らせ
上記の例の場合
sudo
を見るために、管理者権限で netstat を実行するために使用されました。
すべて
の
プログラム名
. netstatを一般ユーザー(つまり、sudoを使わず、他の方法で管理者権限を付与されていないと仮定して)で実行すると、自分のUIDを所有者とするソケットのプログラム名だけが表示されます。そのため
プログラム名
は表示されません(つまり、非表示になり、代わりにプレースホルダーのハイフンが表示されます)。
Proto Recv-Q Send-Q Local Address Foreign Address State ID/Program name
tcp 0 0 127.0.0.1:46371 0.0.0.0:* LISTEN 4489/code
...
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
...
更新と余談:(大きくupvotedされた)コメントの1つに対応するため :
に関するAbdullのコメントについて。
scp
オプションの順序、彼が提案するもの。
scp -r some_directory -P 80 ...
...は、オプションとパラメータを挟み込んでいます。
-r
スイッチは追加の引数を取らず
some_directory
はコマンドの最初のパラメータとして扱われます。
-P
とそれに続くすべてのコマンドライン引数は、コマンドの追加パラメータのように見えます(つまり、ハイフンで始まる引数は、もはやスイッチとはみなされません)。
getopt(1)
は、パラメータが
の後に
オプション(つまりスイッチ)の中に、無造作に挟み込まないでください。
getopt が呼び出されるときのパラメータは、getopt がパースする方法を変更するオプション (SYNOPSIS のオプションと optstring) と、パースされるパラメータ (SYNOPSIS のパラメータ) の 2 つに分けて考えることができます。 2番目の部分は オプション引数でない最初のパラメータ、あるいは'--'が最初に現れた後である。 最初の部分で '-o' または '--options' オプションが見つからなかった場合、 2番目の部分の最初のパラメータが短いオプション文字列として使われる。
というのは
-r
コマンドラインオプションはさらに引数を取りません。
some_directory
は、"オプションの引数ではない最初のパラメータです。
getopt(1)
のマニュアル・ページでは、それに続くすべてのコマンドライン引数(すなわち。
-P 80 ...
)は非オプション(および非オプション引数)であると見なされます。
つまり、実質的には、このように
getopt(1)
は、オプションの終わりとパラメーターの始まりを灰色のテキストで区切った例を示しています。
scp -r
some_directory -P 80 ...
とは関係ありません。
scp
の挙動と、POSIX 標準のアプリケーションで
getopt(3)
のC言語関数のセットです。
コマンドラインの順序や処理に関する詳細は
getopt(1)
を使用しています。
man 1 getopt
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン