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