2013年7月21日 星期日

防止.bashrc輸出內容造成sftp無法使用

目前小弟我負責維護幾台工作站,之前幾台工作站的FTP都無法使用,一定要從另一台工作站傳送,反正利用網路硬碟的功能,其他的工作站還是能拿到檔案。
前幾天工作站因為不明原因死了,非得讓無法用FTP的工作站連FTP;debug才發現原因:

在.bashrc中,放入了許多通知用的訊息,echo內容會讓sftp的收到錯誤訊息直接中止傳輸。
.bashrc的第一行有一行判斷式:
if [ $prompt ]; then echo "blahblahblah" fi
前面if用來擋掉非互動的連線,不過這好像沒什麼用…查一下正確的方法是用:
if [ "$SSH_TTY" ]
這個可以確認使用者用ssh登入,而不是sftp連線。

修改這行判斷式後就可以正常使用sftp了。
--
其實到最後還是不知道原因是什麼:

本來唯一可以使用的工作站,它的ssh版本是
OpenSSH_5.5p1, OpenSSL 1.0.0a 1 Jun 2010
其他兩台不能用的則是:
OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8o 01 Jun 2010
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003
不知道是不是1.0允許echo輸出文字的關係?這部分目前未明。

沒有留言:

張貼留言