.ssh / config для запуска удаленного сеанса в zsh

11

Я хотел бы начать удаленный сеанс без ввода следующей команды

ssh user@remoteserverip -t zsh

Я знаю, что могу изменить имена хостов в, ~/.ssh/configчтобы просто использовать что-то вроде этого:

ssh serveralias -t zsh

Но я хочу удалить -t zshпараметр.

Есть ли способ достичь этого без написания функции?

brngp
источник
Связанный: unix.stackexchange.com/questions/44307/...
ОДС

Ответы:

6

Я не думаю, что это возможно с ~/.ssh/config. -tМожет быть покрыто путем добавления RequestTTY yes, но это не кажется , вы можете задать удаленную команду в ~/.ssh/config.

Однако с помощью zshвы можете добавить:

alias -g 'serveralias=serveralias -t zsh'

к вашему ~/.zshrc.

Или сделайте функцию вроде:

zssh() ssh "$@" -t zsh
Стефан Шазелас
источник
Это aliasдействительно правильно? Проверьте ваши цитаты.
CVn
Я думаю, что я пойду с этим решением спасибо!
августа
5

Я согласен с @Stephane, что нет способа сделать это с помощью ~/.ssh/config file. Другой подход заключается в использовании ~/.ssh/authorized_keysфайла на удаленном сервере. Если вы добавите такую ​​строку:

command="exec zsh" ssh-dss ..... rest of key ....

Тогда вы можете просто ssh как обычно, и вы получите zsh на удаленном сервере.

пример

На сервере SSH к удаленному.

$ ssh saml@greeneggs

На удаленном сервере, подтверждая, что мы в zsh.

[saml@greeneggs]~% ps -eaf|grep $$
saml      1974  1973  1 10:34 pts/3    00:00:00 zsh
saml      2023  1974  0 10:34 pts/3    00:00:00 ps -eaf
saml      2024  1974  0 10:34 pts/3    00:00:00 grep --color=auto 1974

С помощью этого файла вы можете сделать что-то более сложное, посмотреть вопросы и ответы под названием: ssh, запустить определенную оболочку и запустить команду на удаленном компьютере? ,

SLM
источник
command="exec zsh"плохая идея: невозможно запустить ssh с явной командой (так что до свидания scp, rsync,…). unix.stackexchange.com/a/20739 показывает, как это сделать прилично.
Жиль "ТАК - перестань быть злым"
Я не знал, что можно использовать author_keys для выполнения команд. это довольно хорошая идея, но я буду использовать решение от Стефана, потому что проблема указана Жилем. Спасибо
brngp
@ Жиль - да, я нашел ваше решение и только что показал здесь потенциал, не хотел просто копировать ваше решение здесь, поэтому я сослался на ваше в нижней части моего ответа.
SLM
4

Для тех, кто прибывает сюда спустя годы, с 2017 года в конфигурационный файл можно поместить все:

Host host_1
    HostName 1.2.3.4
    User root
    Port 22
    RequestTTY yes
    RemoteCommand zsh
Саския Кейл
источник
Лучший ответ на 2019 год. Этот ответ нуждается в большем количестве голосов!
geekQ
0

Вам лучше изменить настройки системной оболочки.

  1. Подключитесь к серверу нормально. ssh serveralias
  2. Выполнить, chshчтобы изменить системную оболочку
  3. Введите, /bin/zshчтобы установить его в Zsh
  4. Переподключитесь ssh serveraliasи он покажет%

chsh [username] может использоваться для изменения настроек другого пользователя без переподключения.

Ch.Idea
источник