ITカメラマン忘備録

写真撮るのが趣味なエンジニア見習いの忘備録。

scpにはまるパターン

ちょっとはまったのでscpにはまるパターンを調べてみた

環境

詳細は前の記事参照

  • 前提条件としてsshは接続できている
  • クライアントのssh/configは以下
Host sakura
        HostName        IPAddress
        Port            10022
        IdentityFile    ~/.ssh/sakura_rsa
        User            hoge
  • やりたいことはVPS(sakura)にユーザーhogeで接続し、/home/hoge/test以下にローカルのファイルをコピーしたい

はまりどころ

コピー先のパスが適切ではない

やったこと
scp ローカルファイル sakura:/test
結果
scp: /test: Permission denied

解決策
  • コピー先をルートからのパスで記載
    scp ファイルパス sakura:/home/hoge/test
  • もしくは~つける
    scp ファイルパス sakura:~/test

リモートホストにscpがインストールされていない

  • ほとんどのディストリビューションはscpはクライアントパッケージに含まれる
  • サーバーパッケージだけがインストールされている場合はssh接続はできるがscpはできない
  • インストールしているけどパス通っていないとかも同様
  • さくらのVPS(標準)は特に意識しなくても大丈夫
解決策
  • クライアントパッケージをインストールする
    # yum install openssh-clients

ssh接続時に何かしらの出力がある

  • scpはsshの標準出力を横取りしてファイルのコピーを行っている
  • ssh接続時に何か表示するような設定をしていると、エラーになる可能性がある
解決策
  • 以下のコマンド打って何か表示されるか確認
    ssh sakura /bin/true
  • 何も表示されなければOK
  • 何か表示される場合は.bashrcとか調べてみる
  • さくらのVPS(標準)は特に意識しなくても大丈夫

所感

自分が引っかかったのは1つめのやつ。
ssh接続しているユーザーのカレントディレクトリからでいいじゃない。
そしてコピー先のパスが間違ってもPermission deniedと出るのね。。。
エンジニア力が低いとこういう細かいところに時間を食ってしまう・・・精進せねば

まぁでもこういうところで躓きながらやると、すーっと使うよりは覚えるのでいい経験かな(ポジティブ)

参考

自力で解決したけど他のはまるパターンは最近出てた以下の書籍が大変参考になった。
OpenSSH [実践] 入門

一歩進んだ使い方とか載っててsshバリバリな人にもオススメできる。