команды в authorized_keys

Я создал SSH не корневой/не суперпользователь с authorized_key, чтобы удаленно войти в мой сервер и завершить работу его однако, я пытаюсь сделать это из authorized_key файла при помощи command="" синтаксис

У меня есть следующее в authorized_keys файле

command="shutdown -p now",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa 

Однако, когда попытка выполнить вход в систему ssh, в то время как пользователь может войти.... в команду, кажется, не выполняется.

Каков правильный синтаксис для команд, будучи используемым в authorized_keys?

как делает без перенаправления портов, no-x11-forwarding... и т.д. влияют на способность пользователя войти в систему с командой удаленно?

команда

/usr/bin/ssh -2 -i /path/to/.ssh/rsa -p 22 -vvv -l user xxx.xxx.0.25

отладочная информация

debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp 
// REMOVED
debug3: sign_and_send_pubkey: RSA 
// REMOVED
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Saving password to keychain failed
debug3: Incorrect RSA1 identifier
debug1: read PEM private key done: type RSA
Identity added: /.... //removed
(/.../.ssh/shutdown_rsa) // removed 
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to xxx.xxx.0.25 ([xxx.xxx.0.25]:22). //removed
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug3: Ignored env TERM_PROGRAM
debug3: Ignored env SHELL
debug3: Ignored env TERM
debug3: Ignored env TMPDIR
debug3: Ignored env Apple_PubSub_Socket_Render
debug3: Ignored env TERM_PROGRAM_VERSION
debug3: Ignored env TERM_SESSION_ID
debug3: Ignored env USER
debug3: Ignored env SSH_AUTH_SOCK
debug3: Ignored env __CF_USER_TEXT_ENCODING
debug3: Ignored env PATH
debug3: Ignored env PWD
debug3: Ignored env XPC_FLAGS
debug3: Ignored env XPC_SERVICE_NAME
debug3: Ignored env SHLVL
debug3: Ignored env HOME
debug3: Ignored env LOGNAME
debug1: Sending env LC_CTYPE = UTF-8
debug2: channel 0: request env confirm 0
debug3: Ignored env DISPLAY
debug3: Ignored env SECURITYSESSIONID
debug3: Ignored env _
debug2: channel 0: request shell confirm 1
debug2: callback done
0
задан 1 September 2015 в 17:52
4 ответа

Директива "command" в autorhized_keys НЕ выполняет указанную команду, она только позволяет пользователю запускать эту конкретную команду повторно, используя этот ключ.

-1
ответ дан 5 December 2019 в 18:46

Два предположения:

Открытый ключ протокола 2 состоит из: параметров, типа ключа, ключа в кодировке base64, комментария

Я не вижу base-64 закодированный ключ в строке вашего файла authorized_keys.

Identity added: /.... //removed
(/.../.ssh/shutdown_rsa) // removed 

Вы представляете более одного ключа? Ваш -vvv не завершен Вы упустили важный бит о том, какой ключ предлагался. Например,

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/Kendall/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
0
ответ дан 5 December 2019 в 18:46

Со мной случилось то же самое. Все было на месте, но я все еще входил в систему без какой-либо конкретной команды. Это было решено, пока я дважды не проверил, какой идентификатор использует клиент ssh, добавив -v для подробного режима. Я понял, что он использует кешированный ключ от ssh-agent, который мне пришлось сначала убить. В этой настройке действительно не так уж много волшебства.

0
ответ дан 22 October 2020 в 18:03

Указанная команда всегда выполняется без аргументов. Переменная среды SSH2_ORIGINAL_COMMANDучитывает команду, введенную пользователем.

Вы можете ознакомиться с документацией здесь:https://support.ssh.com/manuals/server-admin/64/ssh-server-g3.html

command="command"

Это используется для указания «принудительной команды», которая будет выполняться на стороне сервера вместо чего-либо еще, когда пользователь аутентифицированный. Команда, введенная пользователем (, если таковая имеется ), помещена в переменная окружения SSH2_ORIGINAL_COMMAND. Команда выполняется на pty, если соединение запрашивает pty; в противном случае он запускается без телетайп. В команде можно использовать кавычки, если они экранированы обратной косой чертой.

Этот параметр полезен для ограничения определенных открытых ключей для выполнения только определенной операции. Примером может быть ключ, который разрешает удаленное резервное копирование, но ничего больше. Обратите внимание, что клиент может укажите переадресацию TCP/IP и/или X11, если они явно не указаны отказано (см. -переадресация портов-и -x11-переадресация ниже).

Если терминал явно разрешен в файле ssh-server-config.xml, принудительная команда запускается только тогда, когда пользователь пытается запустить удаленный команды. Если пользователь запрашивает оболочку, он может получить ее нормально, и принудительная команда не выполняется.

Если принудительная команда определена в файле ssh-server-config.xml, она переопределяет любые команды в файлах авторизации. То файл конфигурации также может разрешать только определенные команды или запрещать все удаленные команды.Эти ограничения применяются также к командам в файл авторизации.

Для получения дополнительной информации об ограничениях команд в файле конфигурации см. команду.

0
ответ дан 24 September 2021 в 06:42

Теги

Похожие вопросы