Я хочу выполнить команду через ssh, но мой сервер использует парольную фразу, я хочу сделать только однострочную без запроса парольной фразы.
~# ssh -t root@dev5 'echo "tes" ; bash'
Enter passphrase for key '/home/sed22/.ssh/id_rsa':
Спасибо за помощь.
но мой сервер использует кодовую фразу
Нет, это не так. Ваш ключ зашифрован, поэтому ваш клиент запрашивает парольную фразу, чтобы он мог ее расшифровать.
Не поддавайтесь соблазну снять шифрование с ключа - это плохо TM.
Вместо этого используйте ssh-agent или pageant (windows) для безопасного хранения ключей в памяти на время сеанса. Как именно вы это сделаете, зависит от вашей клиентской ОС.
Если вы пытаетесь автоматизировать процесс, возможно, вам придется использовать незашифрованный ключ, но вы должны принять особые меры предосторожности, чтобы ограничить то, для чего ключ может использоваться. пример.
Вы можете удалить кодовую фразу из ключа с помощью ssh-keygen -p
. Это начало ключа под названием FOO, который, как вы видите, зашифрован парольной фразой:
[me@risby .ssh]$ head -5 FOO
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,DCF8CD9222D62A42D0BFE4FC284BD6BB
f2hDtfkOeUC0Gw0MhQzSvPSj+6XtYX+Y7XMZ7m8BuAz4mg2G/M99LmXlmGW/7AUj
Мы удаляем парольную фразу (вводя возвращение при запросе новой парольной фразы):
[me@risby .ssh]$ ssh-keygen -p -f FOO
Enter old passphrase:
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
и ключ теперь не зашифрован:
[me@risby .ssh]$ head -2 FOO
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA2mfFcvjEuIsyZbhdp4U9Hn7XxFr5naBJEqSMGFdrfL7iX38C