![`Отказано в доступе (открытый ключ)` при добавлении ключа в SSH-Agent через скрипт Bash](https://rvso.com/image/1601564/%60%D0%9E%D1%82%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BE%20%D0%B2%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B5%20(%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B9%20%D0%BA%D0%BB%D1%8E%D1%87)%60%20%D0%BF%D1%80%D0%B8%20%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8%20%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%20%D0%B2%20SSH-Agent%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%20Bash.png)
На моем мобильном устройстве и Raspberry Pi (по совпадению процессоры AArch и ARM соответственно) ssh-agent
по умолчанию не загружается.
Сначала мне нужно начать ssh-agent
:
eval `ssh-agent -s`
Затем я добавляю ключ к агенту:
ssh-add /home/jimjamz/.ssh/myKey
Мне предлагается ввести пароль, я его ввожу. Затем ключ добавляется в агент:
Enter passphrase for /home/jimjamz/.ssh/myKey:
Identity added: /home/jimjamz/.ssh/myKey (/home/jimjamz/.ssh/myKey)
После этого я смогу подключиться к своему удаленному серверу, не указывая свой ключ еще раз.
Для удобства я хочу добавить вышеизложенное в скрипт, который запускает агент и добавляет ключ:
#!/bin/bash
eval `ssh-agent -s`
ssh-add /home/jimjamz/.ssh/myKey
Когда я запускаю скрипт, я вижу, что процесс агента начался, и мне предлагается ввести пароль моего закрытого ключа. Я ввожу его правильно, и ключ добавляется к агенту.
Однако при попытке подключиться по ssh к своему удаленному серверу я вижу следующее:
Permission denied (publickey).
Проблема, похоже, в вызове ssh-add
внутри моего скрипта bash. Если я вручную вызываю ssh-add
за пределами скрипта, а затем пытаюсь подключиться по ssh к своему удаленному серверу, я могу подключиться.
ssh-add
Почему при вызове в скрипте bash не распознается, что ключ уже добавлен ?
Если я запускаю скрипт bash на одной из моих других машин (где ssh-agent уже загружен по умолчанию), ключ, добавленный в скрипт, можно успешно использовать для ssh на удаленном сервере. Похоже, он просто не работает на устройствах, где ssh-agent не запущен автоматически по умолчанию.