.bashrc文件防止某些SFTP GUI APP登录到虚拟机



我有一个。bashrc文件在我的Ubuntu服务器上运行

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_;

我可以通过SSH完全正常地登录到我的VM。

我不知道为什么在一些SFTP客户端(GUI应用程序)像Cyberduck阻止我登录到我的虚拟机。但是当删除 my .bashrc或停用它时,它可以正常工作。


<标题>

这背后有什么主要原因吗?

我的。bashrc中到底有什么是我不应该做的

您的bashrc文件可能会输出一些内容到stdout,某些SFTP程序可能会试图将其解释为SFTP命令,导致连接或认证失败。

您应该确保您的bashrc文件仅适用于使用以下两种技术之一的交互式会话:

  • 测试PS1的值(当然在你的分配之前),它不会为非交互式会话设置,或者
  • 测试$-是否包含i;这只会发生在交互式会话中。
所以你的脚本看起来像:
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

最好的调试方法是将每行(或行块)添加到空的.bashrc中,并尝试每次登录。最终,您将添加一大块行,并且无法登录,因为违规命令在该块中。

我的直觉是toilet命令在某种程度上扰乱了你的gui工具。

最新更新