ファイル転送に役立つSCP
サーバにファイルを転送したいが、ファイル共有サーバやFTPサーバが用意されていないといったことがよくあると思います。
そんな時にはSCPが役に立ちます。
SCPはどうも「Secure Copy」というSSHの機能を実行するための Secure Copy Protocolというプロトコルであるらしい。
とはいっても、SSHをベースにしていてsshdなどのSSHサーバを起動していれば使えるので、ちょこちょこお世話になることが多い。
尚、2020年現在では既に古いプロトコルであるとされ、SFTPやrsyncなどの別の転送方法が推奨らしいが・・・
便利なのでなんやかんやで使ってしまいますね。
WindowsからSSH接続する場合に、エージェントソフトとしてよくTeratermを使いますが、Teraterm上でもSCPは利用可能です。
サーバ接続後にメニューから ファイル > SSH SCP でSCPの転送用ダイアログを呼び出せます。
LinuxからSCPを使う場合は、scpコマンドを利用します。
scp [オプション] <転送元ファイル名> <転送先ファイル名>
がコマンドのフォーマットになります。
注意するのは、どちらのファイルがSSH先のサーバにあるかになります。
送信先がSSH先だった場合は以下になります。
scp [オプション] <転送元ファイル名> <サーバログイン名>@<サーバホスト名 or IPアドレス>:<転送先ファイル名>
転送元がSSH先だった場合は、「<サーバログインユーザ名>@<サーバホスト名 or IPアドレス>:」の部分を転送元ファイルにつけることになります。
また、SSH先のファイルのパスですが、相対パスでの記載だった場合は、機転がSSHサーバのログインに使ったユーザのホームディレクトリが起点となります。
よく使うオプションは鍵認証だった場合に鍵を指定するための「-i」になります。
scp -i <鍵ファイル> <転送元ファイル名> <転送先ファイル名>
よくあるトラブルとしては、SSHサーバ側を再構築したなどでSSHサーバ側のhost keyが変わっている場合にエラーが出てファイル転送ができないことが挙げられます。
こういった場合はSSH接続と同じく、自身のknown_hostsに登録されているサーバのhost keyを消しましょう。
ssh-keygen -R <SSHサーバのホスト名> ※IPアドレスで接続する場合はIPアドレスで指定する。
以上になります。