Intereting Posts

Что черт переопределяет мой путь в SSH?

У меня есть сервер, на котором запущен экземпляр Gogs (собственный хостинг github).

Недавно я сделал ручную модернизацию и переместил множество вещей, включая изменение имени пользователя, в которое входят удаленные пользователи.

Так или иначе, теперь я не могу ssh войти в git-пользователя (он называется gogs ):

 Durr@DURRCOMP ~ $ ssh --noprofile gogs@192.168.1.8 PTY allocation request failed on channel 0 bash: /home/git/go/src/github.com/gogits/gogs/gogs: No such file or directory Connection to 192.168.1.8 closed. 

Что-то, где-то, выполняет (или пытается выполнить) двоичный /home/git/go/src/github.com/gogits/gogs/gogs , который существовал до изменений.

Однако я не знаю, что вставляет это в процесс входа в систему .

Оболочка для пользователя gogs :

 root@vcsbox:/etc/gogs/conf# cat /etc/passwd | grep gogs gogs:x:109:119::/home/gogs:/bin/bash root@vcsbox:/etc/gogs/conf# 

Пользователь gogs не имеет .bashrc или .profile :

 gogs@vcsbox:~$ pwd /home/gogs gogs@vcsbox:~$ ls -a . .. .bash_history .cache .gitconfig gogs-repositories .nano_history .ssh gogs@vcsbox:~$ 

/etc/profile выглядит нормально:

 gogs@vcsbox:~$ cat /etc/profile # /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). if [ "$PS1" ]; then if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then # The file bash.bashrc already sets the default PS1. # PS1='\h:\w\$ ' if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi fi # The default umask is now handled by pam_umask. # See pam_umask(8) and /etc/login.defs. if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset i fi gogs@vcsbox:~$ 

И /etc/profile.d/ не имеет особо подозрительного содержимого:

 gogs@vcsbox:/etc/profile.d$ ls bash_completion.sh Z97-byobu.sh gogs@vcsbox:/etc/profile.d$ cat * # Check for interactive bash and that we haven't already been sourced. if [ -n "$BASH_VERSION" -a -n "$PS1" -a -z "$BASH_COMPLETION_COMPAT_DIR" ]; then # Check for recent enough version of bash. bash=${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.} if [ $bmajor -gt 4 ] || [ $bmajor -eq 4 -a $bminor -ge 1 ]; then [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && \ . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion ]; then # Source completion code. . /usr/share/bash-completion/bash_completion fi fi unset bash bmajor bminor fi #!/bin/sh # Z97-byobu.sh - allow any user to opt into auto-launching byobu # Copyright (C) 2011 Canonical Ltd. # # Authors: Dustin Kirkland <kirkland@byobu.co> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # Allow any user to opt into auto-launching byobu by setting LC_BYOBU=1 # Apologies for borrowing the LC_BYOBU namespace, but: # a) it's reasonable to assume that no one else is using LC_BYOBU # b) LC_* is sent and receieved by most /etc/ssh/ssh*_config if [ -n "$LC_BYOBU" ] && [ "$LC_BYOBU" -gt 0 ] && [ -r "/usr/bin/byobu-launch" ]; then . /usr/bin/byobu-launch elif [ "$LC_TERMTYPE" = "byobu" ] && [ -r "/usr/bin/byobu-launch" ]; then . /usr/bin/byobu-launch elif [ "$LC_TERMTYPE" = "byobu-screen" ] && [ -r "/usr/bin/byobu-launch" ]; then export BYOBU_BACKEND="screen" . /usr/bin/byobu-launch elif [ "$LC_TERMTYPE" = "byobu-tmux" ] && [ -r "/usr/bin/byobu-launch" ]; then export BYOBU_BACKEND="tmux" . /usr/bin/byobu-launch fi # vi: syntax=sh ts=4 noexpandtab gogs@vcsbox:/etc/profile.d$ 

Я даже прибегал к грубому поиску всей файловой системы для рассматриваемого пути:

 root@vcsbox:/etc/gogs/conf# find / -type f | xargs grep gogits 2>/dev/null /etc/gogs/conf/app.ini:; More detail: https://github.com/gogits/gogs/issues/165 /etc/gogs/conf/app.ini:COOKIE_NAME = i_like_gogits root@vcsbox:/etc/gogs/conf# 

Так. С учетом вышеизложенного, где, черт побери, может командовать команда?

Система – Ubuntu 14.04 LTS (версия сервера).

Можно принудительно выполнить команду с помощью опции в файле .ssh/authorized_keys . Тогда это, очевидно, будет выполняться только в том случае, если вы попытаетесь войти в систему с использованием этого конкретного ключа ssh. Проверьте этот файл, возможно?