SSH-соединение с Ruby без имени пользователя с использованием `authorized_keys` - PullRequest
1 голос
/ 24 февраля 2012

Я аутентифицировал сервер, используя authorized_keys push, чтобы я мог запустить команду ssh 192.168.1.101 из моей системы и мог подключиться через сервер.

Теперь я попробовал с библиотекой, у меня это не сработало

  Net::SSH.start("192.168.1.209",username) do |ssh|   @output=ssh.exec!("ls -l")  end

as, Это обязательное поле для имени пользователя. Я хочу без имени пользователя.

Итак, я попробовал это

    system('ssh 192.168.1.209 "ls -l"') 

Он запускает команду для меня. Но я хочу вывод в переменную типа @output в первом примере. Есть ли какая-нибудь команда, драгоценный камень или какой-нибудь способ, которым я мог бы получить решение?

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

Любое ssh-соединение требует имени пользователя. По умолчанию используется имя вашей системной учетной записи или имя, указанное в .ssh/config для хоста, к которому вы подключаетесь.

Ваше текущее имя пользователя должно быть установлено как ENV['USER'], если вам нужен доступ к нему.

Если вам интересно, какое имя пользователя используется для этого соединения, попробуйте узнать с помощью ssh -v, что является подробным режимом, объясняющим, что происходит.

0 голосов
/ 24 февраля 2012

Вы можете передать параметры в% x [] следующим образом:

1. dom = ‘www.ruby-rails.in‘
2. @whois = %x[whois #\{dom\}]
0 голосов
/ 24 февраля 2012

Обратные кавычки работают очень похоже на «системную» функцию, но с важным отличием.Команда оболочки, заключенная между обратными кавычками, выполняется со стандартным выводом как результат.

Итак, следующий оператор должен выполнить ssh 192.168.1.209 "ls -l" и поместить список файлов каталога в переменную @output:

@output = `ssh 192.168.1.209 "ls -l"`
...