技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

コマンドでSFTPによるサーバ接続【Linux】

SFTPとは

FTPSSHバージョンです。簡単に言えばセキュアなFTPということになります。
FTPはFile Transfer Protocolの略で、ファイルをやり取りする際の取り決めです。

SSHによって暗号化された通信路を使ってファイルをやり取りすることになるので、機密情報を扱う場合や多くの企業向けシステムで利用されます。

Linuxコマンド

接続

$  sftp -i <秘密鍵のパス> -oPort="<サーバーのPort>" <公開鍵のユーザー名>@<サーバーのIP>

秘密鍵のパスは大抵「~/.ssh」フォルダに格納されると思うので、鍵の名前が「id_rsa」であれば「~/.ssh/id_rsa」となります。

サーバーのポートは、SSHの場合「22」が世界で共通のデフォルトポートですが、世界に知られた状態ではまずい、ということもあってカスタムポートを開くことが一般的です。例えば22600などを指定します。

鍵の作成

下記のようなコマンドで公開鍵と秘密鍵を作成したら、そのユーザー名を上記接続の際に使用します。

$ ssh-keygen -t <暗号方式(rsaなど)> -f <鍵のパス(ファイル名称も拡張子なしで指定)> -C <ユーザー名>


作成した公開鍵の内容は、接続先サーバーの~/.ssh/authorized_keysに追記されている必要があります。それによって、接続元を認識しているわけです。秘密鍵を接続の際に渡すことで、接続が安全であることを確認しています。

ファイルのアップロードとダウンロード

sftp接続を完了した状態を前提に話します。

手順があります。

  1. アップロードするディレクトリ、またはダウンロードする元のディレクトリを指定
  2. ファイルをアップロード、またはダウンロードするファイル名を指定して実行


【アップロードの場合】
1:

sftp> cd <ディレクトリまでのパス>

2:

sftp> put <ファイル名>


【ダウンロードの場合】
1:

sftp> cd <ディレクトリまでのパス>

2:

sftp> get <ファイル名>


また、コマンドを実行している「ローカル」のカレントディレクトリを下記コマンドで確認できます。

sftp> lpwd