Запустіть віддалену команду, використовуючи конфігураційний файл ssh


32

Я хотів би мати можливість налаштувати команду для запуску на ssh логін на сервер, не потребуючи введення. В основному я шукаю еквівалентний файл ssh config:

ssh host command

тож все, що мені потрібно набрати:

ssh host

і команда запускається.

Відповіді:


16

Також можна вставити команду у файл дозволених ключів. ( ~/.ssh/authorized_keys). Це дозволяє виконати власну команду для кожної клавіші у файлі. Я використовую це для пересилання з'єднань оболонки через мій брандмауер. Результатом є те, що я можу сш на один хост, і він автоматично підключає сеанс до хоста всередині мережі. 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 ...

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


1
Це дивовижно, я не знав, що ти можеш це зробити. +1
Брайан Віггінгтон

3
Якщо ви введете команду у файл дозволеного_кейса, вона порушить такі речі, як rsync та scp - ви отримаєте щось подібне: відкритий термінал не вдався: не термінал. Також пам’ятайте, що якщо команда не вдасться, ви не зможете увійти. Я виявив це важким шляхом.
Джон Хант

11

Якщо ви працюєте з OpenSSH, схоже, ~/.ssh/rcвін виконується після входу .


3
Є чи /.ssh/rcзнаходиться на машині клієнта або сервера? Виглядає як із документів сервер, так?
важкий

1
Так, це було б на серверній машині.
співмешканець

На жаль, rcздається, що файл не може запустити такі речі screen, як помилка "Потрібно підключитися до терміналу"
davidparks21

10

Ви можете створити псевдонім баш.

У свій .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.