.ssh / config спосіб вказати розподіл псевдо-tty та виконання команд


13

Чи є спосіб вказати .ssh/configкоманду типу:

ssh -t remote-host "screen -dR screen_name"

тож я можу легко отримати доступ до віддаленого screenсеансу ssh remote-host?

Зараз я вирішив цю проблему за допомогою спеціального сценарію:

$ cat ~/bin/sssh 
#!/bin/sh

/usr/bin/ssh -t $1 "screen -dR ab"

~/binзалишається спочатку $PATH, але це негнучко і некрасиво.

Також я хотів би знайти спосіб реалізувати автодоповнення хоста для мого користувальницького сценарію.


Я б замінив $1на $@. Тоді ви можете додати більше опцій, а не лише ім'я хоста. Для завершення спробуйте виконати . /usr/share/bash-completion/completions/ssh, після чогоcomplete -F _ssh sssh
Alex Stragies

Відповіді:


17

Щоб виділити tty так, як було б з -tопцією, введіть RequestTTY forceяк запис у файл ssh config (зазвичай у ~/.ssh/config). Щоб завжди виконувати команду на сервері після підключення, введіть RemoteCommand COMMANDзапис, де COMMANDце команда, яку ви хочете виконати під час з'єднання. Для інших варіантів перевірте man ssh_config.

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name


1

Я б заперечував, що це найбільш гнучкий спосіб. Сценарій дозволяє встановлювати параметри, додавати умовні умови, змінювати команду за потребою, все на основі входів.

Є способи "примусити" команду до authorized_keys. Але я не знаю способу примусити виділити tty, за винятком командного рядка або змусити команду на віддаленому сервері з локальних файлів конфігурації.

У мене є сценарій, який сканує конфігураційний файл, перевіряє наявність DNS з різними доменами та встановлює рядок заголовка емулятора термінала. Я називаю це з екрана моєї локальної системи ( Ctrl-a g).


0

Примітка: RemoteCommandпочинає працювати з OpenSSH 7.6 . У більш ранній версії (тобто поточній debian 9.9) ssh-клієнт перестане працювати належним чином (принаймні, з git pull).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.