2013-09-17 3 views
1

Я пишу программу Java, которая может программно использовать SSH на любой удаленной машине и выполнять команды. Я повторно используя существующую библиотеку Java, чтобы сделать так: https://github.com/shikhar/sshjДоступ к Sudo при использовании SSHJ

Проблема Я бегу в это выяснить, как Судо ПЕРЕКЛЮЧИТЬ как таковой:

«Sudo су - [имя пользователя] здесь».

Если вы запустите это вручную в терминале, вам будет предложено ввести пароль. Насколько я понимаю, если вы находитесь под файлом sudoers и правильно вводите свой пароль, вы сможете запустить команду для переключения пользователя как такового. Я не хочу, чтобы пользователь вводил пароль. В идеале, программа не должна требовать какого-либо вмешательства человека для запуска.

То, что я хотел бы получить, это: программно отправить пароль через сокет, чтобы пользователь не вводил его в стандартную версию. Если пользователь может войти на удаленную машину с использованием своих учетных данных, программа должна быть в состоянии получить эти же учетные данные и передать их, когда sudo запрашивает пароль у пользователя.

После Googling какое-то время я не могу понять, как добиться этого с помощью этой библиотеки. Говорю, что я на самом деле не специалист по деталям SSH более низкого уровня. У кого-нибудь есть идея по этому поводу?

Спасибо, ребята.

+0

Вы могли получить sudo для работы с sshj без использования библиотеки overthere? Это может быть решением для вас, хотя оно не работает для меня с vanilla ubuntu 16.04 с использованием openssh-сервера. https://stackoverflow.com/questions/20406425/executing-sudo-command-on-my-amazon-ec2-box-using-sshj-java-library – simgineer

ответ

3

Мы написали библиотеку Overthere поверх SSH/J, которая поддерживает вход в систему с помощью sudo с приглашением пароля или без него. Посмотрите на это, чтобы узнать, подходит ли оно вашим потребностям.

+0

большое спасибо, посмотрим! – HiChews123

+0

У меня возникают трудности с получением команд sudo для работы с sshj. Мне было интересно, есть ли короткие примеры запуска команды sudo, например: 'sudo touch/opt/new-file.txt', используя Overthere, которые я могу попробовать. – simgineer

+0

Для продолжения настройте его с помощью INTERACTIVE_SUDO (см. Https://github.com/xebialabs/overthere#sudo-and-interactive_sudo). это даст указание библиотеке искать запрос пароля и вводить его. –

1

Это не должно быть проблемой. Вы можете настроить sudo, чтобы не требовать пароля для определенных пользователей. Взгляните на документацию sudo и на страницу sudoers.

+0

Предположим, что у меня нет привилегии менять sudo на НЕ требуется пароли для определенных пользователей. Как я могу достичь этого? Мне хотелось бы программно передать пароль и отправить его в сокет (вместо того, чтобы ввести пароль пользователя) – HiChews123

Смежные вопросы