I think there must be something wrong on the configure file(I don't know which configure file). This post is the same problem. I found one line in my bashrc.
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
export LD_LIBRARY_PATH=/nfs3/onegene/user/group1/linxingzhong/opt/lib:${LD_LIBRARY_PATH}
#export PATH=/nfs2/pipe/RNA/soft/R-3.1.2/bin/R:$PATH
#export R_HOME=/nfs2/pipe/RNA/soft/R-3.1.2/
#export R_USER=linxinzhong
export PATH=/export/home/linxingzhong/opt/bin:$PATH
export PATH=/nfs3/onegene/user/group1/linxingzhong/opt/bin:$PATH
#export PATH=$PATH:/nfs2/pipe/RNA/soft/R-3.1.2/bin
export PYTHONPATH=/nfs3/onegene/user/group1/linxingzhong/opt/local/lib/python2.6/site-packages
alias tmux='tmux -2'
#export R_LIBS=/nfs3/onegene/user/group1/linxingzhong/opt/R-packages
export R_LIBS=/nfs3/onegene/user/group1/linxingzhong/opt/R-packages
#[ -f $HOME/opt/bin/zsh ] && exec $HOME/opt/bin/zsh -l
zsh
After I remove the last line, I can connect to the sftp. This is weird.