Memo

メモ > サーバ > 各論: ネットワーク > scpでファイルを操作する

scpでファイルを操作する
scpコマンドとは。セキュアなファイル転送の仕組み、使い方を解説 | ミライサーバーのススメ https://www.miraiserver.ne.jp/column/about_scp/ scpコマンドでディレクトリ(フォルダ)をコピーしました #Linux - Qiita https://qiita.com/pugiemonn/items/3c80522f477bbbfa1302 ssh、scp、sftpコマンドをポート番号を指定して使う - bacchi.me https://bacchi.me/linux/ssh-tips/ 別のポートでSCPを実行するにはどうすればよいですか? https://ciksiti.com/ja/chapters/8522-how-do-i-scp-with-a-different-port ■準備 送信先サーバには鍵認証でSSH接続し、そのための準備は整っているものとする。 また、送信元サーバから送信先サーバへの接続も許可されているものとする。(ファイヤーウォールなど。) 送信元と送信先の両方に、scp_test ディレクトリを作成しておく。 ここを作業ディレクトリとする。
$ mkdir scp_test $ cd scp_test/ $ pwd /home/ec2-user/scp_test
■SSHで接続 送信元から送信先に、鍵認証でSSH接続する。 以下は送信元サーバでの作業。
$ vi /home/ec2-user/scp_test/id_rsa
-----BEGIN RSA PRIVATE KEY----- … 秘密鍵(xxx.pem)の内容を貼り付ける。 MIIEowIBAAKCAQEAryCYY8j+j5lQqBKJgdA3SLZWC7UJ9NeFkmypG4JJQwt3Gr9jG+rJY8vKUdx/ 〜略〜 yT0043TsaaS2Tx7KxqdFksrRW3IH0AKqXFKVcvdhuNbjVK5ps806PEaW/AZj5oIOfpto -----END RSA PRIVATE KEY-----
$ chmod 600 /home/ec2-user/scp_test/id_rsa … アクセス権限を設定。 $ chown ec2-user:ec2-user /home/ec2-user/scp_test/id_rsa $ ssh -p 10022 -i /home/ec2-user/scp_test/id_rsa ec2-user@203.0.113.1 … SSHで接続。(対象のIPが「203.0.113.1」とする。) The authenticity of host '[203.0.113.1]:10022 ([203.0.113.1]:10022)' can't be established. ECDSA key fingerprint is SHA256:PJy1eVu5LMIueVjLLFpLYG126qaMB8DAQR2ruDlHj6o. ECDSA key fingerprint is MD5:48:97:79:b5:29:91:70:ba:25:75:8b:53:cf:f9:0a:89. Are you sure you want to continue connecting (yes/no)? yes … 「yes」と入力してEnter。 Warning: Permanently added '[203.0.113.1]:10022' (ECDSA) to the list of known hosts. Last login: Wed Oct 25 15:03:12 2023 from p7cdba6cd.osakff01.ap.so-net.ne.jp __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/ 37 package(s) needed for security, out of 40 available Run "sudo yum update" to apply all updates. $ hostname … 接続できていることを確認。 example.com
■SCPでファイル転送 ファイル /home/ec2-user/scp_test/test1.txt を転送する。 転送したいファイルを先に、転送先を後に指定する。 ポート指定のオプションは「-P」と大文字なので注意。
$ scp -P 10022 -i /home/ec2-user/scp_test/id_rsa /home/ec2-user/scp_test/test1.txt ec2-user@203.0.113.1:/home/ec2-user/scp_test/
ディレクトリ /home/ec2-user/scp_test/test2 を転送する。 ディレクトリの場合は「-r」を指定する。
$ scp -P 10022 -i /home/ec2-user/scp_test/id_rsa -r /home/ec2-user/scp_test/test2 ec2-user@203.0.113.1:/home/ec2-user/scp_test/
転送元ファイルのパーミッションが何であろうと、転送先には 0664 で配置される。 転送元ファイルの所有者が何であろうと、転送先では接続時に使用するユーザが所有者となる。 オプション「-p」を付けると、変更時間・アクセス時間・パーミッションの値を引き継いで転送できる。 ただし所有者は引き継がれない。(どうしても引き継ぎたければ、rsyncなど別の手段の検討が必要みたい。)
$ scp -P 10022 -i /home/ec2-user/scp_test/id_rsa -p /home/ec2-user/scp_test/test4.txt ec2-user@203.0.113.1:/home/ec2-user/scp_test/ $ scp -P 10022 -i /home/ec2-user/scp_test/id_rsa -rp /home/ec2-user/scp_test/test5 ec2-user@203.0.113.1:/home/ec2-user/scp_test/
必要に応じて、以下のように転送後に所有者を調整することはできる。(一括での変更になる。)
# chown -hR apache. /home/ec2-user/scp_test/test
圧縮してから転送。 通常の方法で圧縮して、通常の方法で転送。
$ cd /home/ec2-user/scp_test $ zip -r test3.zip test3 $ scp -P 10022 -i /home/ec2-user/scp_test/id_rsa /home/ec2-user/scp_test/test3.zip ec2-user@203.0.113.1:/home/ec2-user/scp_test/
転送先で、通常の方法で展開。
$ unzip test3.zip
■SCPでファイル取得 取得したいファイルを先に、保存場所を後に指定する。
$ scp -P 10022 -i /home/ec2-user/scp_test/id_rsa ec2-user@203.0.113.1:/home/ec2-user/scp_test/test3.zip /home/ec2-user/scp_test/

Advertisement