Храните закрытый ключ вне ~/.ssh

Мне приходится иметь дело с довольно неприятной ситуацией. Я должен передать файл через сценарий оболочки с использованием scp с одного сервера на другой. Проблема в том, что у меня нет root-доступа ни на одном из них. Мне не разрешено устанавливать какие-либо пакеты, такие как sshpass, ssh2, expect и т. д. У меня даже нет разрешения на запись в домашнем каталоге пользователя, которого я должен использовать на втором сервере.

Поскольку я не могу использовать sshpass и т. д., чтобы позволить моему сценарию вводить учетные данные для входа, я подумал об использовании пары ключей ssh ​​для аутентификации. На самом деле это была моя первая мысль, но поскольку пользователь на втором сервере не имеет прав на запись в своем домашнем каталоге, а только в последующем каталоге, ssh-keygen дает сбой, поскольку не может поместить ключи в ~/.ssh.

Оба являются серверами Debian, кстати.

Есть ли способ создать пару ключей ssh ​​и использовать ее вне ~/.ssh?

Любая помощь приветствуется.


person DerpMeister    schedule 02.12.2014    source источник
comment
Вы можете запустить скрипт в целевой системе и вытащить файл?   -  person Andras    schedule 02.12.2014


Ответы (2)


На стороне клиента да. Однако на стороне сервера, если не настроено иначе, sshd будет ожидать ваши учетные данные в этом каталоге.

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

У вас есть альтернативный транспортный механизм? Можете ли вы поместить файл public_html и получить его с другой стороны?

person Amadan    schedule 02.12.2014

Вы можете иметь пары ключей где угодно. Что важно, так это то, что разрешения установлены правильно для пары ключей. Право собственности должно быть установлено для пользователя chown user:user keyfile, а разрешения должны быть chmod 400 keyfile.

После того, как вы переместили свой ключ и установили разрешения, все, что осталось, — это указать scp, какой ключ использовать. Вы можете сделать это, используя флаг -i.

IE: scp /source/file user@host:/target/location/ -i keyfile

Редактировать: как Амадан намекнул в своем ответе - это предполагает, что сервер, к которому вы подключаетесь, уже имеет ключ в качестве авторизованного ключа для пользователя. В противном случае потребуется изменение /etc/ssh/sshd_config, которое может сделать только тот, у кого есть права доступа. Возможно, стоит попробовать cat /etc/ssh/sshd_config на сервере, если ваш пользователь имеет к нему доступ прямо сейчас. Если у вас есть доступ для чтения, вы сможете определить ожидаемое местоположение author_keys. Возможно, администратор сервера уже настроил ожидаемое расположение ключа на что-то, к чему у вас есть доступ для записи.

person user239546    schedule 02.12.2014