SCP в Java с URI без пароля и имени пользователя

Как перенести файл из Linux-бокса RHEL в другой Linux-бокс RHEL без пароля и без имени пользователя, используя URI в Java, используя SCPClient? Я знаю, как сделать ssh без пароля, и я могу скопировать файл без пароля, но у меня проблемы с его работой без имени пользователя.

Вот мое предположение:

Источник: файл:///home/имя пользователя/temp.txt

Адресат: scp://@192.168.1.1:/home/username/


person Everlight    schedule 02.04.2015    source источник
comment
я могу представить очень мало допустимых сценариев, которые не требуют пароля (или ключа) для SSH/SCP...   -  person SnakeDoc    schedule 02.04.2015


Ответы (2)


Вы пробовали scp://[email protected]:/home/username/ ?

person Tassos Bassoukos    schedule 02.04.2015
comment
Я знаю, что это работает. Проблема в том, что я не знаю имя пользователя, когда хочу SCP. - person Everlight; 02.04.2015
comment
Тогда вы не можете использовать SSH/SCP. SSH/SCP не может определить использование только открытого ключа. - person Tassos Bassoukos; 02.04.2015
comment
@Everlight Имя пользователя обязательно... SCP находится через SSH... вы входите в удаленный ящик. - person SnakeDoc; 02.04.2015
comment
Нет способа просто попытаться войти в систему как один из перечисленных доступных пользователей? Или, скорее, использовать имя пользователя, от которого вы выполняете scp-имя, не сообщая SCPClient, что это за имя пользователя? например, как я могу сделать ssh -Y 192.168.1.1? - который использует текущее имя пользователя и ssh без пароля. - person Everlight; 02.04.2015
comment
А, это дает вам текущее имя пользователя — используйте System.getProperty("user.name"), чтобы получить его. - person Tassos Bassoukos; 02.04.2015

На основе SCPClient Я скажу, что это невозможно. Итак, лучший способ - сделать

SCPClient scpc = new SCPClient
scpc.setRemoteHost( "192.168.1.1" );
scpc.getValidator().setHostValidationEnabled( false );
scpc.setAuthentication( "/home/username/.ssh/id_rsa", System.getProperty("user.name"), "" );
scpc.connect();
scpc.put( "file:///home/username/temp.txt", "scp://" + System.getProperty("user.name") + "@192.168.1.1:/home/username/" );

Для моей цели безопасно предположить, что удаленное имя пользователя совпадает с локальным именем пользователя.

person Everlight    schedule 02.04.2015