Я пытаюсь смонтировать удаленную файловую систему через sshfs с использованием аутентификации с открытым ключом. Я получаю эту ошибку: execvp: No such file or directory
Я могу подтвердить, что аутентификация с открытым ключом работает с ssh:
ssh -i /home/me/.ssh/myKey user@192.168.1.1
Last login: Sun Jan 13 21:25:13 2013 from 192.168.1.2
-bash-3.00$
Я могу подтвердить, что sshfs правильно монтирует удаленный каталог с аутентификацией по паролю:
sshfs user@192.168.1.1:/remote/dir /local/dir -o ssh_command="ssh"
user@192.168.1.1's password:
[root@192.168.1.2 .ssh]# df -h
Filesystem Size Used Avail Use% Mounted on
...
sshfs#user@192.168.1.1:/remote/dir
1000G 0 1000G 0% /local/dir
(Я знаю, что в указанном выше "-o" нет необходимости. Я использовал его, чтобы показать, что не удалось найти ssh
это не причина, по которой это не удается) Но когда я пытаюсь подключить параметры открытого ключа к монтированию sshfs, например:
sshfs user@192.168.1.1:/remote/dir /local/dir -o ssh_command="ssh -i /home/me/.ssh/myKey",sshfs_debug
Я получаю это: execvp: No such file or directory
на консоли, а каталог не смонтирован.
Я подтвердил, что "Нет такого файла или каталога" не означает, что он не может найти ssh
(и я использовал / usr / bin / ssh, чтобы быть уверенным), и я подтвердил, что путь к ключу правильный:
ls -al /home/me/.ssh/myKey
-rw------- 1 nobody root 887 Jan 13 20:36 /home/me/.ssh/myKey
Удаленный хост не имеет записей в файле журнала о неудачных попытках.
Насколько я могу судить, я использую команду документированным образом, так что она должна работать, верно? Система, в которой происходит этот сбой, работает под управлением RHEL5.
Может ли кто-нибудь пролить свет на проблему или указать мне правильное направление? У меня закончились идеи по устранению неполадок.
IP-адреса и имена пользователей были изменены, чтобы защитить невиновных. Извините, если я допустил опечатки после копирования и вставки. Я исправлю их, если они найдутся.
Поскольку у меня была та же проблема с CentOS, я предполагал, что ssh_command
не работает так, как заявлено (также это означает, что он не работает так же, как большинство других вещей, которые могут подключаться к SSH - например, rsync). Я начал искать способы настроить SSH для установки нужных мне параметров, не требуя от меня подачи ввода из командной строки в sshfs, и я нашел комбинацию, которая работает.
Я добавил к /etc/ssh/ssh_config
следующие строки:
Host remotehost
HostName 192.168.1.1
User user
IdentityFile /home/me/.ssh/myKey
После этого мне больше не нужно было передавать какие-либо параметры командной строки в SSH через sshfs, и я получил следующую команду:
sshfs user@remotehost:/remote/dir /local/dir
Следует отметить, что remotehost
в команде sshfs - точное значение, которое было определено для Host
ключ в ssh_config.
Если кто-то знает способ выполнить эту задачу с использованием параметров командной строки, мне все еще интересно, поскольку я не думаю, что это правильно, что для этого требуется изменение конфигурации всей системы, чтобы это работало, как утверждается в документации. А пока у меня, по крайней мере, есть обходной путь. Надеюсь, это поможет кому-то другому избежать потраченных на это часов.
FWIW, пост 4 в эта тема был источником моего вдохновения. Сообщение 5 выглядит многообещающим как способ избежать изменения общесистемной конфигурации, но это приводит к ошибке. execvp: Permission denied