Skip to content
Advertisement

.bashrc file preventing some SFTP GUI APP from logging to the VM

I have a .bashrc file running on my Ubuntu server

red="[33[0;31m]"
white="[33[1;37m]"

toilet --gay -f mini  " RSM PRODUCTION ";
export PS1="$white┌──[$redu$white@$redh$white]──$white[$redw$white] n└── $white"

#================================
#            Alias              =
#================================

alias L='ls -a -lrt'
alias l='ls -CF'
alias install='sudo apt-get install'
alias update='sudo apt-get update'
alias upgrade='sudo apt-get -u upgrade'
alias agi='sudo apt-get install'
alias agu='sudo apt-get update'
alias agg='sudo apt-get -u upgrade'

# personal aliases
alias ls='ls -hF --color'    # add colors for filetype recognition
alias lx='ls -lXB'        # sort by extension
alias lk='ls -lSr'        # sort by size
alias la='ls -Al'        # show hidden files
alias lr='ls -lR'        # recursice ls
alias lt='ls -ltr'        # sort by date
alias lm='ls -al |more'        # pipe through 'more'
alias ll='ls -l'        # long listing
alias lsize='ls --sort=size -lhr' # list by size
alias lsd='ls -l | grep "^d"'   #list only directories
alias lalf='ls -alF'
alias acyl='cd ~/.icons/ACYL_Icon_Theme_0.9.3/ && bash AnyColorYouLike'
alias reboot='sudo shutdown -r now'
alias shutdown='sudo shutdown -h now'

#Command substitution
alias h='history | grep $1'
alias rm='rm -i'
alias cp='cp -v -i'
alias mv='mv -i'
alias which='type -all'
alias ..='cd ..'

#Bookmark Directory
alias dir_='cd /home/forge/rsm'

alias nginx_='cd /etc/nginx'
alias .ssh_='cd /root/.ssh'
alias ssh_='cd /etc/ssh'
alias root_='cd /root'
alias site_='cd /etc/nginx/sites-available'
alias bin_='cd /usr/local/bin'

dir_;

I can log-in to my VM perfectly fine via SSH.

I am not sure why in some SFTP client (GUI Apps) like Cyberduck preventing me from log-in into my VM. But when remove my .bashrc or deactivating it, it works fine.


Questions

Is there a main reason behind this ?

What exactly is in my .bashrc that I shouldn’t do ?

Advertisement

Answer

Your bashrc file probably outputs stuff to stdout, which some SFTP programs might try to interpret as SFTP commands, leading to connection or authentication failure.

You should make sure your bashrc file only works for interactive sessions using one of those two techniques:

  • Either testing the value of PS1 (before your assignment of course) it will not be set for non-interactive sessions, or
  • testing if $- contains i ; which will only happen for interactive sessions.

So your script would look like:

if [[ $- == *i* ]]; then
red="[33[0;31m]"
white="[33[1;37m]"

toilet --gay -f mini  " RSM PRODUCTION ";
export PS1="$white┌──[$redu$white@$redh$white]──$white[$redw$white] n└── $white"
[...]
fi
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement