ファイル転送に役立つ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アドレスで指定する。

以上になります。