🧊

サーバーにsftpできないときは

Coda2やForkLiftやTransmitやらなんでもいいけどGUIのSftpソフトで、サーバーにつながらんくなった!って時の対処法です。


色んなケースがあるとは思いますが、私の場合はbashrcが悪さしてました。

原因と解決方法

原因

bashrcの記述に問題があって、Terminalみたいな「対話型ではない接続」ができなくなってました。

解決方法

ログイン時に読まれるであろうbashrcなどの「先頭」に、

[ -z "$PS1" ] && return

と記述してください。
何をしてるかというと、「対話型ではない接続」の場合は、以降を読み込まないようにしてるだけ。
普段のTerminalでの接続では、いつも通り読み込まれます。

解決までの道のり

Coda2のファイラーが突然つながらんくなった

昨日までいけてたのに!

Coda2が悪いのかと思い、Forkliftで試す→もちろんダメ。
ううむ。

ポートの指定もユーザーもssh鍵系も全部問題ないはず。

Terminalからコマンドでつないでみる

sshはいつも通りできてるけど、sftpは?

sftp -oPort="9999" username@hostname
# ポートを変えてる場合はポート、username/hostnameはそれぞれのものを。

そうすると、

Connecting to hostname...
Received message too long 1970496800

なんかエラーになってるー。

「Received message too long」で検索するとそれらしい記事が。

参考:2009-01-13 - 下手の考え休むに似たり

とはいえ直接の回答ではありませんでした。

が、bashrcが怪しいということがわかって、メッセージ・・もしやGUI系のソフトでログインしたらダメなやつとかあったり・・?と思ったので。

bashrcが悪かった

bashrcをリネームして読み込まれないようにして試したところ、あっさりつながるじゃないの!

ということは、どうやらつい最近覚えたbashrcのカスタマイズの影響だった模様。
bashrcの先頭に以下を追記。

# .bashrc for interactive terminal
[ -z "$PS1" ] && return

「対話型の接続」の場合に定義される環境変数 PS1 がない場合は、何も読み込まないように設定。
これですっきり解決。

やっぱLinuxもといbashをきっちりやらなあかんのかしら・・