2

Я добавил следующую строку в свой sshd_config:

...
ForceCommand /bin/ssh-alert
...

файл ssh-alert выглядит так

#!/bin/bash
SSH_IP=$(echo $SSH_CLIENT | head -n1 | awk '{print $1;}')
yowsup-cli demos -c $YOWSUP_CONF -s $PHONENUMBER "SSH Alert! Login from IP $SSH_IP" > /dev/null 2>&1

#the important part:
/bin/bash --login

Теперь проблема в том, что, если я запускаю SSH-сессию в программе MobaXTerm, окно SFTP будет пустым, и после закрытия ssh-сессии оно говорит: « Waiting for the pending transfer to complete... .

Если я изменю /bin/bash --login в файле ssh-alert на /bin/bash (без --login), он снова будет работать, но мой .bashrc, .bash_profile, /etc/bash.bashrc не будет получен ,

Есть ли способ выполнить ForceCommand, только если это сеанс SSH, а не сеанс SFTP. Или способ проверить, является ли это сеансом SFTP в моем bash-скрипте.

ПРИМЕЧАНИЕ. Мой .bash_profile имеет команду с выводом. Если бы я отключил этот вывод, он бы снова заработал.

РЕДАКТИРОВАТЬ: FileZilla SFTP тоже не работает!

2 ответа2

1

Есть ли способ выполнить ForceCommand, только если это сеанс SSH, а не сеанс SFTP.

Нет.

Или способ проверить, является ли это сеансом SFTP в моем bash-скрипте.

Для этого и используется $SSH_ORIGINAL_COMMAND . Вы должны быть в состоянии различать, используя это, если команда SFTP или нет

ПРИМЕЧАНИЕ. Мой .bash_profile имеет команду с выводом. Если бы я отключил этот вывод, он бы снова заработал.

Это проблема, которая нарушает протокол SFTP. Вы не должны генерировать какие-либо выходные данные, если оболочка не является интерактивной:

if [ "$PS1" ]; then
  # generate output
fi
0

Если ForceCommand запускается sshd , то демон прекращает любые дальнейшие действия с этим сеансом. Он никогда не проверит, является ли это sftp и нужна ли ему "подсистема sftp". Сеанс SFTP не может общаться с bash , для этого нужны ssh и scp .

Чтобы SFTP работал, скрипт ForceCommand должен в конце концов выполнить /usr/lib/openssh/sftp-server или какой - либо подобный обработчик.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .