Как установить оболочку, которая используется, когда пользовательские SSHs к серверу. Например, я не могу перенести BASH и мне нужно использовать ZSH, как мне сделать так, чтобы ZSH загружался вместе с моим профилем ( .zsh_profile
), когда я ssh к машине.
Я тоже не хочу передавать кучу параметров с помощью ssh, я не могу установить оболочку по умолчанию?
/etc/shells
должен быть указан для того, чтобы оболочка была выбираемой.passwd
упаковке .man chsh
меняет оболочку, не всегда работаетКроме того, вы можете вставить
exec /bin/zsh
свой скрипт входа в bash. Это заменит экземпляр bash вашей оболочкой.Или вы можете сделать
ssh host "zsh -l"
источник
L
ssh -t
требуется, чтобы получить TTY для последних вариантов. По умолчанию, если указана команда (напримерzsh -l
), OpenSSH будет выполнять оболочку без входа в систему, которая не будет выделять вам TTY, и-l
не изменит это (потому что она выполняется после входа в систему).Отредактируйте / etc / passwd (если у вас есть права или обратитесь к системному администратору), чтобы изменить оболочку по умолчанию.
источник
Если вы не можете изменить оболочку по умолчанию,
ssh -t user@host 'zsh -l'
работает.-t
Флаг заставляет распределение псевдо-терминал, а-l
флаг порождает Войти оболочки .источник
Я не уверен, как вы можете поместить свой локальный
.zshrc
на удаленный сервер (это без постоянного хранения его там), это работает для меня, чтобы изменить мою оболочку входа на удаленный сервер.Поскольку это общий аккаунт, я могу использовать
zsh
только этот метод для себя.Добавьте это в свой
~/.ssh/config
файл на вашем локальном компьютере.Там может быть хакерский способ выполнить то, что вы ищете, как показано ниже.
ПРЕДУПРЕЖДЕНИЕ. Это не дает никаких гарантий и не выглядит «мудрым», однако мне удалось поместить свой локальный файл на сервер и использовать его для входа в оболочку входа в систему.
Как это работает?
RemoteCommand
определяет, что нужно запускать на удаленной стороне.LocalCommand
определяет, что нужно запустить на локальном компьютере, который используется для копирования локального файла на удаленный сервер для его поиска. Вот подвох, это происходит только после «успешного» подключения к удаленному хосту.Смысл:
sleep
sftp
чтобы поместить ваш файл на удаленный сервер, удаленный сервер просыпаетсяsleep
и исходные тексты ваших сценариев.Это супер хакерский, я хотел бы знать, есть ли лучший способ тоже.
Обновление: это можно использовать вместо «долгого» времени сна:
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
источник