問題
scpがエラー無く終わるが、何も転送されていない
% scp otiai10@foobar.com:~/test.txt ~/ Enter passphrase for key '/User/otiai10/.ssh/foobar': foobar % % ls -la | grep test.txt % # ← あれーん?
tl;dr, 解決
- リモート側の
.bashrc
でログイン時にログインしたホスト名を出力するようにしていたのが原因だったっぽい?(ナンデ?)
# リモートの~/.bashrc ### 以下をコメントアウトしたら動いた hostname
参考
- Linux scp command help and examples
- 6.2 scpコマンドを使ったファイルの転送
- scpでハマった件 - Qiita
- scpが出来なくて超ハマったメモ(原因は.bashrc) : akiyan.com
ログ
問題の発覚
% scp otiai10@foobar.com:~/test.txt ~/ Enter passphrase for key '/User/otiai10/.ssh/foobar': foobar % % ls -la | grep test.txt %
なんもない? scp
コマンドにはverbose logを出す-v
オプションがあるので調査
% scp otiai10@foobar.com:~/test.txt ~/ # # 略 # debug1: Entering interactive session. debug1: pledge: network debug1: Sending command: scp -v -f ~/test.txt Sink: foobar foobar Sending file modes: C0640 37 test.txt debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Transferred: sent 3264, received 2992 bytes, in 0.1 seconds Bytes per second: sent 22591.7, received 20709.0 debug1: Exit status 1 %
確かにExit status 1してるし、sentに対してrecievedが少ないが、なんとも情報が少ない。ググってギリギリそれっぽいのがこれだった。
sshも繋がるしWinSCPも出来たのでなかなか原因にたどり着くことができませんでした。同じような状況のときは.~rcを調べてみるといいかもしれません…。
それな。~/.bashrc
を確認しても、だいたい環境変数のexportとかしてるだけでそれっぽいものが無いけど、以下のブロックを見つけた
# {{{ PROMPT if [[ `hostname` =~ foobar ]]; then hostname else export PS1="\e[1;34m\]$\e[m\] " fi # }}}
foobarサーバだったらfoobar
を出力し、それ以外だったらプロンプト(コマンド受け付けるところの左のやつ)をシンプルに $
(色付き)だけにするというやつ。「まさかぁ〜」と思いつつコメントアウトしたら動いた。問題を切り分けて、どうやら hostname
を実行している箇所 だけ が問題だったということが判明して事なきを得たが、結局原因はわかっていないです。教えてエロいひと。
DRY
- 作者: 木本雅彦,松山直道,稲島大輔
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (5件) を見る