BLOGTIMES
2015/02/27

CentOS 5 の curl で sftp を使う

  centos5  ssh 
このエントリーをはてなブックマークに追加

sftp でファイル転送をする必要があったのですが、ごちゃごちゃスクリプトを書くのは面倒なので、curl に一撃でダウンロードやアップロードをする機能があったのを思い出して早速試してみたところ、curl: (1) Unsupported protocol: sftp というエラーが出てしまってしょんぼり。以下をみると分かるとおり、CentOS 5.x に搭載されている curl 7.15.5 は sftp が有効な状態でコンパイルされていませんでした。

# curl -V curl 7.15.5 (i386-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 Protocols: tftp ftp telnet dict ldap http file https ftps Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

仕方がないので、curl の本家サイトからリンクされている http://mirror.city-fan.org/ftp/contrib/sysutils/Mirroring/ で公開されている RHEL/CentOS 向けバイナリを利用することにしました。ライブラリの依存関係をかいけつしてやらないといけないので、インストールは以下のような感じになります。

rpm -Uvh http://mirror.city-fan.org/ftp/contrib/libraries/libssh2-1.4.3-16.0.cf.rhel5.x86_64.rpm http://mirror.city-fan.org/ftp/contrib/libraries/libssh2-devel-1.4.3-16.0.cf.rhel5.x86_64.rpm rpm -Uvh http://mirror.city-fan.org/ftp/contrib/libraries/c-ares-1.10.0-4.0.cf.rhel5.x86_64.rpm http://mirror.city-fan.org/ftp/contrib/libraries/c-ares-devel-1.10.0-4.0.cf.rhel5.x86_64.rpm rpm -Uvh http://mirror.city-fan.org/ftp/contrib/libraries/libidn-1.29-3.rhel5.x86_64.rpm http://mirror.city-fan.org/ftp/contrib/libraries/libidn-devel-1.29-3.rhel5.x86_64.rpm rpm -Uvh http://mirror.city-fan.org/ftp/contrib/sysutils/Mirroring/libcurl7155-7.15.5-17.cf.rhel5.x86_64.rpm http://mirror.city-fan.org/ftp/contrib/sysutils/Mirroring/libcurl-7.41.0-1.0.cf.rhel5.x86_64.rpm http://mirror.city-fan.org/ftp/contrib/sysutils/Mirroring/curl-7.41.0-1.0.cf.rhel5.x86_64.rpm

インストール後に curl の状態を調べてみると、ちゃんと sftp が有効になっていることが確認できます。

$ curl -V curl 7.41.0 (x86_64-redhat-linux-gnu) libcurl/7.41.0 OpenSSL/0.9.8b zlib/1.2.3 c-ares/1.10.0 libidn/1.29 libssh2/1.4.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets Metalink

ここまでくれば、以下のコマンドでファイルを簡単にサーバから出し入れできるようになります。
以下はパスワード認証を使っていますが、sftp は ssh の応用アプリなので公開鍵認証することもできます。

# ファイルの取得 curl -k -u username:password sftp://server.example.com/path/to/getfile.zip # ファイルの送信 curl -k -T putfile.zip -u username:password sftp://server.example.com/path/to/dir

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/7422
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン