Частичный ответ:
Ваш беспроводной адаптер подключен к шине PCI 3b. Согласно dmesg
,
[ 0.338888] pci 0000:00:1c.0: PCI bridge to [bus 3b]
эта шина находится за мостом PCI 0:1c.0
. Существует четыре сообщения об ошибках, связанных с четырьмя разными мостами PCI :
[ 0.888395] dpc 0000:00:1b.0:pcie010: DPC error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 4, DL_ActiveErr+
[ 0.888407] dpc 0000:00:1c.0:pcie010: DPC error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 4, DL_ActiveErr+
[ 0.888423] dpc 0000:00:1c.4:pcie010: DPC error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 4, DL_ActiveErr+
[ 0.888436] dpc 0000:00:1d.0:pcie010: DPC error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 4, DL_ActiveErr+
, возможно, поэтому он не может найти беспроводной адаптер. Я не знаю, что должно быть за теми другими мостами.
Вы можете сравнить с выводом dmesg
при работающей загрузке и посмотреть, присутствуют ли все еще сообщения об ошибках.
Однако я подозреваю, что это какая-то аппаратная проблема. Это будет нелегко исправить.
Предполагая, что вы используете клиент OpenSSH, вы можете сделать это с помощью sshpass .
sshpass -P "Enter passphrase for key" \
-pSomeIncredibleLongAndRandomizedPasswordThatIsMeantToBeUsedForScripts \
ssh -i testssh server_username@10.0.0.25
Конечно, только потому, что вы можете сделать это, не означает, что вы должны это делать. Я хотел бы призвать вас рассмотреть комментарии, которые были сделаны по вашему вопросу.
Кажется, что невозможно добиться этого только с помощью bash или открытого -ssh.
Мне удалось заставить его работать с помощью Expect
spawn ssh -i testssh server_username@10.0.0.25
expect "Enter passphrase"
send "SomeIncredibleLongAndRandomizedPasswordThatIsMeantToBeUsedForScripts\r"
interact
expect -c "spawn ssh -i testssh server_username@10.0.0.25;expect \"Enter passphrase\";send \"SomeIncredibleLongAndRandomizedPasswordThatIsMeantToBeUsedForScripts\r\";interact"
Expect ищет Enter passphrase
и вводит пароль send "SomeIncredibleLongAndRandomizedPasswordThatIsMeantToBeUsedForScripts\r"
.
Наконец interact
для взаимодействия с сеансом
В качестве примечания: пароли в виде обычного текста вообще никогда не следует использовать.
I know it's recommended to use ssh keygen to login without password,
[...]
So I was thinking of obscuring the process a bit, by setting a password on the identity file,
Звучит немного противоречиво, поэтому трудно сказать, что вы пытаетесь сделать.
Если вы входите в систему в интерактивном режиме, вы можете просто ввести пароль при использовании файла ключа/удостоверения.
С другой стороны, если вы имеете в виду, что ключ должен быть доступен какому-то автоматическому процессу и вы хотите сохранить пароль ключа в той же системе, то вы можете не иметь пароля в все.
Но если вы хотите избежать этого, вы можете вместо этого установить обычный (хороший )пароль/фразу-пароль для ключа и использоватьssh-agent
для хранения незашифрованного ключа для использования автоматическим скриптом. Затем вам нужно будет вводить кодовую фразу ключа только один раз после каждой перезагрузки, и хотя незашифрованный ключ все еще будет находиться в системной памяти, злоумышленник не сможет получить его, просто украв диски. Вместо этого им пришлось бы нарушать программную безопасность системы или выполнять атаку с «холодной» загрузкой -, чтобы прочитать содержимое памяти.
Затем также используйте принудительную команду в файлеauthorized_keys
на пульте дистанционного управления, чтобы ограничить возможности использования ключа.
Чтобы сделать ключ доступным для скрипта с помощью ssh-agent
, запустите агент и добавляйте в него ключ после каждой перезагрузки:
# start the agent, the output contains settings needed to talk to it
# and an 'echo' command printing its PID, remove that one here
ssh-agent | grep -ve ^echo > ~/script-agent-info
. ~/script-agent-info
# add the key to the agent, this asks for the passphrase
ssh-add ~/.ssh/script_id_rsa
, а затем в скрипте
# load the agent settings we stored earlier
. ~/script-agent-info
# use the key
ssh somehost@somewhere
(Вместо того, чтобы агент генерировал случайное имя для используемого сокета, вы можете использовать ssh-agent -a
, чтобы сообщить ему путь, а затем просто установить SSH_AUTH_SOCK
на этот путь в сценарии.)