Запустите удаленную команду, используя конфигурационный файл ssh


32

Я хотел бы иметь возможность настроить команду для запуска по SSH входа на сервер, без необходимости вводить ее. В основном я ищу файл конфигурации ssh, эквивалентный:

ssh host command

так что все что мне нужно набрать это:

ssh host

и команда запускается.

Ответы:


16

Также можно вставить команду в ваш файл авторизованных ключей. ( ~/.ssh/authorized_keys). Это позволяет вам выполнить пользовательскую команду для каждого ключа в файле. Я использую это для пересылки подключений оболочки через мой брандмауэр. В результате я могу подключиться по ssh к одному хосту, и он автоматически подключает сеанс к хосту в сети. authorized_keysЗапись выглядит следующим образом :

command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...

Точнее, редирект для моего экземпляра Gitolite. Это позволяет простой внешний доступ без прямого воздействия на хост gitolite для любого внешнего доступа. Проверьте man-страницу для получения дополнительной информации. ( http://linux.die.net/man/8/sshd )


1
Это круто, я не знал, что ты сможешь это сделать. +1
Брайан Виггинтон

3
Если вы поместите команду в свой файл author_keys, она сломает такие вещи, как rsync и scp - вы получите что-то вроде этого: открыть терминал не удалось: не терминал. Также имейте в виду, что если команда не будет выполнена, вы не сможете войти в систему. Я обнаружил, что это трудный путь.
Джон Хант

11

Если вы работаете в OpenSSH, похоже , ~/.ssh/rcбудет выполняться при входе в систему .


3
Находится /.ssh/rcна клиентской или серверной машине? Похоже из документации на сервер, верно?
тяжело

1
Да, это было бы на сервере.
Coneslayer

К сожалению, rcфайл, похоже, не запускается, например screen, появляется сообщение «Должен быть подключен к терминалу»
davidparks21

10

Вы можете настроить псевдоним bash.

В вашем файле .bashrc вставьте:

alias ssl='ssh some_host run_command'

Тогда вам даже не придется вводить имя хоста.

Или, если вы хотите сделать это с несколькими хостами (а несколько псевдонимов не будут работать), используйте небольшой скрипт:

kevin@box:~$ cat ssl.sh
#!/bin/sh
ssh $1 some_command
kevin@box:~$

2

Вы можете решить это по-своему .ssh/config file, для хоста, на котором вы хотите выполнить команду, добавьте

  RequestTTY yes
  RemoteCommand <some command>

где <some command>твоя команда Это также работает с экраном или tmux.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.