я использую ~/.ssh/config
файл, чтобы я мог легко ввести ssh myserver
и он предоставит правильное имя пользователя, порт, имя хоста, файл идентификации и т. д.
Однако для многих серверов первое, что я делаю, это ввожу su -
войти в систему как root. Я могу сделать все это одной командой в командной строке вот так: ssh myserver -t su -
. Могу ли я что-то добавить к своему ~/.ssh/config
файл, который сделает это за меня? Я хочу уметь делать ssh myserver-root
и он будет делать то же самое, что и ssh myserver -t su -
?
Я знаю о PermitRootLogin
, это отключено для этого сервера, и я не хочу его включать. Я бы предпочел посмотреть, есть ли способ сделать это с помощью ssh на стороне клиента.
Думаю, я бы подошел к этому с другой стороны - используйте 'command =' в записи открытого ключа в вашем файле ~ / .ssh / authorized_keys на удаленном сервере, чтобы запустить вашу команду «su -».
Затем просто используйте / укажите закрытый ключ в вашем файле ~ / .ssh / config (параметр IdentityFile) для каждого хоста / псевдонима ("myserver-root"), с которым вы хотите работать таким образом.
Опции, доступные в authorized_keys (5), задокументированы в sshd (8).
Используй силу, Люк!
использовать RequestTTY force
в твоем ~/.ssh/config
для желаемого хоста.
кстати. это также обсуждается здесь https://unix.stackexchange.com/questions/27713/ssh-config-way-to-spectify-pseudo-tty-allocation-and-command-execution-like-sc/294468#294468
Почему бы не добавить сценарий в каталог на вашем пути (или псевдоним для него) с именем rssh, например:
#!/bin/bash
ssh $1 -t 'su -'
Тогда это просто:
rssh myServer
Я не нашел ни одной опции конфигурации для выделения псевдо-tty в источнике OpenSSH.
Но я могу дать совет относительно PermitRootLogin, установите его на:
PermitRootLogin without-password
И разрешить вход только root с ssh-ключами.
Как насчет того, чтобы добавить что-то подобное в ~ / .bashrc на стороне сервера?
if [ "$SSH_TTY" != "" ]; then su -; logout; fi