Чи є спосіб обійти або запобігти виконанню під ~/.profile
час входу на віддалений сервер Linux за допомогою ssh або putty?
Чи є спосіб обійти або запобігти виконанню під ~/.profile
час входу на віддалений сервер Linux за допомогою ssh або putty?
Відповіді:
Якщо ви хочете , щоб відключити всі сценарії входу в систему , ви можете використовувати --noprofile
прапор , щоб відключити /etc/profile
, ~/.profile
і т.д. , і --norc
відключити ~/.bashrc
в такий спосіб:
$ ssh 127.0.0.1 "bash --noprofile --norc"
Майте на увазі, що ви також можете запустити альтернативну оболонку, якщо така є. Мені довелося використовувати це після псування в chsh
:
$ ssh 127.0.0.1 sh
Це, швидше за все, переведе вас у порожню оболонку (без підказки), тому дайте їй ls
переконатися, що вона працює.
Якщо ваша цільова машина знаходиться в оболонці:
user@host:/$ ssh hostname "bash --noprofile"
Крім того, якщо є інший профіль, який ви хочете використовувати
user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"
Також спробуйте скористатися програмою FTP на зразок WinSCP, щоб видалити помилковий файл входу. Це відкине його, але принаймні ви повинні мати можливість увійти до оболонки за замовчуванням
Як уже згадували інші, запуск bash з --noprofile
прапором під час ініціювання з'єднання буде працювати, хоча якщо ви використовуєте іншу оболонку, це може бути, а може і не бути варіантом.
Однією з альтернатив було б те, щоб сценарій профілю сам виявляв SSH-з'єднання і поводився відповідно. Оскільки підключення SSH зазвичай встановлюють ряд змінних середовища, це легко перевірити. Додавання чогось подібного до наступних рядків до початку вашого профілю має бути достатньо:
if [ "$SSH_CONNECTION" != "" ]; then
echo Logging in with ssh
return
else
echo Logging in with something that is not ssh
fi
# rest of your profile goes here
return
Пропустить решту сценарію , якщо $SSH_CONNECTION
змінна середовища, яка зазвичай створюється , коли з'єднання SSH запускається. Інакше профіль буде працювати як звичайний.
Зауважте, що це буде пропускати лише скрипт із зачіпанням профілю. Усі інші сценарії профілю (наприклад /etc/profile
:) все ще будуть оброблятися, якщо ви не модифікуєте їх аналогічно.