こんにちは。
川口のウェブ屋テダスクのSeitoです。
今回はレンタルサーバーでSSHを使ってSCP(Secure Copy)をする方法をご説明しようと思います。
そもそもSCPとは、SSHでファイルを転送するLINUXコマンドでサーバーから別のサーバーに転送するときに利用します。
利用する状況も合わせてご説明しようと思います。
SCPを利用する状況
SCPを利用する状況を具体的に例を上げると、サーバーのお引っ越しの時に利用します。
もしWordPressで作られたサイトの場合はAll in one migrationというプラグイン使えば簡単に他のサーバーでも移植できますが、それが何サイトもある場合はなかなか時間と手間が掛かります。
また、All in one migrationは無料で利用出来ますが、インポートの際に規定の容量を超えると有料版(約1万円)を購入しなければいけないため、それもためらってしまいますよね。
もし、All in one migrationを使わない場合どうするかというと、FTPというサーバーにアクセスするソフト(File Ziillaなどのクライアントソフト)でWordPressファイルをまるっとダウンロードする方法もあります。
ただ、FTP経由でダウンロードする場合容量に対して、ダウンロードの速度が遅いのが一般的です。
しかもダウンロードしたファイルをまた今度は移動先のサーバーにアップロードするという手間と時間が掛かるため、1サイトだけならまだしも数サイトとある場合は非常に効率が悪いです。
もしSCPを使うと例え数百メガのファイルでもかなりの速度で転送が出来るため、ファイルの移動であれば間違いなくSCPをおすすめします。
SCPで転送出来る条件
SCPで転送出来る条件として以下の物が上げられます。
- 移動元のレンタルサーバーがSSHを使えること
- 転送先のサーバーのディレクトリのパスが分かっていること
1.SSHが使えるレンタルサーバーであること
これは当然ですが、SSH接続ができるレンタルサーバーでなければSCPコマンドは実行できませんので、SSHが利用出来ることが前提となります。
一般的に知られているサーバーはSSHが使えると思いますが、例えばさくらインターネットやエックスサーバーなどです。
また、SSHが利用出来てもSCPコマンドが禁止されている場合もありますので、実行してみるか上手くいかない場合はホスティングに聞いてみて下さい。
2.転送先のサーバーのディレクトリのパスが分かっていること
これはSCPのコマンドで必須の入力項目で、転送先のホスト情報とディレクトリが分かっていないと送信できないようになっています。
もしレンタルサーバーの管理画面やFTPからディレクトリが分からない場合は、送信先のSSHでpwdというコマンドを打ってディレクトリのパスを確認するので、送信先のサーバーもSSHが使えると確認が楽です。
SCPコマンドについて
SCPの基本コマンド
SCPの基本コマンドはこちらです。
scp -r 送信元ディレクトリ アカウント名@ホストアドレス:送信先のディレクトリ
ssh接続をして、このコマンドを入力すると、送信先のユーザーパスワードを聞かれるので、パスワードを入力すると転送が始まります。
このパターンで上手くいくサーバーは知っている限りでいうと、さくらインターネットです。
さくらインターネットの場合は、アカウント名とホストアドレス、そしてパスワードが分かればこのコマンドで送信ができます。
鍵認証を使ったSCPのコマンド
しかしながら今回の記事のタイトルにある通り、多くのサーバーがセキュリティ上の理由でサーバーとのアクセスが鍵認証になっているためプレーンパスワードでは接続できないようになっています。
もし鍵認証必要なサーバーの場合は次のコマンドになります。
scp -r -i 秘密鍵の位置 ./送信ディレクトリ アカウント名@ホストアドレス:送信先のディレクトリパス
基本コマンドとの違いは、「-i」というオプションが追加になった点です。
-iのオプションは認証に秘密鍵を使ってアクセスするというオプションです。
それ以外は同じですが、この秘密鍵については転送先のサーバーで公開鍵と秘密鍵を作らなければいけないため一手間かかりますので、今回はこの鍵認証による接続についてもう少し詳しく流れを説明していきたいと思います。
ちなみに、鍵認証での転送が必須なサーバーはエックスサーバーやColorfulBox、mixhostが上げられます。
鍵認証を使ったSCPのやり方
転送元と転送先の環境について
それでは具体的に流れを説明していきたいと思います。
今回の転送元と転送先の環境は
- 転送元はさくらインターネット
- 転送先はColorfulBox(もしくはmixhost)
という環境です。
ColorfulBoxもしくはmixhostとしているのは、両者ともCPanelという管理画面を採用しており、同様な作業になるためです。
もしエックスサーバー場合は秘密鍵の作り方は違いますが、理屈は同じなので参考になるかなと思います。
管理画面で鍵を作成
それでは早速作業を始めます。
まず、転送先のサーバーの管理画面にログインして鍵を作成します。
セキュリティの項目の「SSHアクセス」をクリックします。
「SSHキーの管理」をクリックします。
「新しいキーの作成」をクリックします。
公開キーを作成していますの項目で、それぞれ入力していきます。
「Key Name」:そのままでも良いですが、分かりやすく今回はさくらインターネットからカラフルボックスに移動するという意味で「id_rsa_sakura_to_colorful」とします。
するとキーの生成が完了しましたと表示されるので、画面下の「戻る」をクリックしてキー一覧の画面に戻ります。
そうすると公開キーという項目に作った鍵が表示されます。
上の画面では、すでにいくつか私が過去に作った鍵がありますが、初めての場合は一つだけ鍵が表示されていると思います。
ここで赤い囲みを見てもらうと、「Not Authorized」となっているのがわかります。
これはまだこの鍵が使える状態出ないことを示していますので、今から使える状態にします。
「管理」というリンクをクリックします。
そうすると、「Authorize」というボタンが表示されますので、クリックします。
これで先程生成した鍵が使えるようになりました。
「戻る」をクリックして前の画面に戻ります。
次は秘密キーの項目に行き、「表示/ダウンロード」をクリックします。
「キーのダウンロード」をクリックして秘密鍵をダウンロードします。
ここで、転送先サーバーに接続するために必要な鍵の作成は完了です。
FTPで秘密鍵をアップロードとアクセス権限の処理
今度は転送先のサーバーのにFTP接続を行い、先程作成した秘密鍵をアップロードします。
これはローカルからサーバーに秘密鍵をアップロードしたあとの画面ですが、ファイルの置き場所はwwwの1階層上くらいが良いかなと思います。
その後にアップロードした「id_rsa_sakura_to_colorful」のパーミッションの変更を設定します。
パーミッション設定は「600」にします。
これは、秘密鍵の設定では必ず行うパーミッション設定になります。ここを飛ばしてしまうと、転送の際にパーミッション設定が弱すぎるとエラーが出るので、必ず設定しましょう。
SSHに接続してSCP転送の実行
Tera TermなどのSSH接続クライアントソフトで転送先のサーバー(さくらインターネット)に接続します。
lsコマンドで、先程FTP経由でアップロードしたファイルがあるか確認します。
パーミッション設定も600なので、「rw——-」となっているのも一緒に確認しましょう。
もしこの段階で、パーミッション設定を忘れていたら「cmhod 600」で変更しても構いません。
そしてここで、この鍵の置き場所のパスを確認します。
パスの確認コマンドは「pwd」です。
上の画面では鍵の置いてあるディレクトリは
home/アカウント名
というのが分かります。
それでは準備が整ったところで、転送を実行していきます。
SCPの基本コマンドでも説明していますが、改めて書くと
scp -r -i 秘密鍵が置いてあるパス ./転送したいディレクトリ/ 転送先アカウント名@転送先ホストアドレス:転送先のディレクトリパス
「秘密鍵が置いてあるパス」:ここには先程pwdで調べたパスと秘密鍵のファイル名を記述します。
「転送したいディレクトリ(もしくはファイル)」:転送したディレクトリを書きます。画像では./test.txtとしていますが、今いる場所が./でその中のtest.txtを送るという意味です。
「転送先アカウント名」:これは転送先サーバ(今回はカラフルボックス)で、一般的にFTPに接続するアカウント名になります。
「転送先ホストアドレス」:これは転送先サーバ(今回はカラフルボックス)で、一般的にFTPに接続するホスト名になります。
「転送先のディレクトリパス」:ホストアドレスの後ろにコロン「:」を付けて指定しますが、これは転送先サーバーに存在しているディレクトリを指定します。
これらを間違えずに入力したら、エンターを押して、コマンドを実行します。
すると、画像の一番下の様にEnter passphraseとパスワードを聞かれるので、秘密鍵を作ったときに指定したパスワードを間違えずに入力します。
パスワードが合っていると、画像のように転送が始まります。
上の画像はファイルが一つだけなので、一瞬で終わっていますが、WordPressなどの大量のファイルの場合はコピーしている様子が画面で流れます。
ここでは改めて確認はしませんが、転送先のサーバーにFTPでアクセスして転送されているか確認してみて下さい。
以上で、鍵認証を使ったSCPのやり方になります。
こんなエラーが出たら
こんなエラーがでたら、先程のパーミッション設定が間違っているかもしれません。
パーミッション設定の所をもう一度確認して、秘密鍵のパーミッションを「600」に設定して再度SCPを行いましょう。
転送量によっては負荷に注意すること
ここまでSCPでファイルを転送する方法をお伝えしてきましたが、このSCPを行う事でファイルの転送容量によっては送信側も受信側もサーバーにかなりの負荷が掛かることになります。
そのため、一度に全てのサイトのファイルを送るというよりも、1サイトごとファイルを転送するようにしたり、ホームページのトラフィックに応じて時間も気にするなど配慮が必要です。
まとめ
今回はサーバーのお引っ越しの時などにファイルサーバー間で転送する方法をお伝えしました。
SCPというコマンドは知っていても、鍵認証でのやり方を詳しく書いている記事がなかったので、私の覚え書きとしても書いてみました。
ぜひ皆さんも試してみてください。
もし、今回の操作に自信が無いとか途中でハマったなどがあれば相談にも乗っていますので、お気軽にお問い合わせください。
以上、「レンタルサーバー(さくらインターネット)からCpanelのサーバー(mixhostやColorfulbox)などで鍵認証を使ってSCPでファイルを送信する方法」でした!
WordPressやWEB技術、集客、ChatGPTなど最新技術に関する情報を毎週お届けする
メールマガジンを発行しています。
不定期でWordPressの脆弱性情報も配信していますので、
WEB担当者やWEBを学んでいる方などにオススメの無料メールマガジンです!
コメント