Как SSH на сервер как sudo из приложения

2

Я использую Sequel Pro для подключения к удаленной базе данных. Обычно, когда я в SSH, я должен бежать sudo su прежде чем я смогу получить доступ к базе данных. Поэтому, когда я помещаю свои обычные учетные данные SSH в Sequel Pro, возникает ошибка, из-за которой у меня нет прав доступа к серверу БД (точно так же, как при попытке подключиться из командной строки без sudo su ).

Так есть ли способ sudo подключиться к удаленному серверу?

Anthony
источник
Итак, вы хотите подключиться к удаленному экземпляру mysql через ssh?
akira
Итак, какую ошибку вы получаете, когда вы подключаетесь к компьютеру с помощью обычного пользователя и запускаете mysql -u & lt; username & gt; -p, где имя пользователя - это имя пользователя базы данных, заданное в SequelPro, а пароль - от Sequel pro?
Sunny
На самом деле, я думаю, что проблема может заключаться в том, что я не могу войти в SSH из-за аутентификации с открытым ключом, хотя в примечаниях к SequelPro говорится, что он будет использовать те же ключи, которые используются для терминала.
Anthony
Извините, даже при дальнейших исследованиях проблема заключается в подключении через сокет после SSHing, который я не рассматриваю как вариант.
Anthony
если вы хотите получить хороший ответ: лучше опишите ситуацию на стороне сервера и на стороне клиента. пока мы просто предполагаем, что вы пытаетесь получить доступ к mysqld, запущенному через сокет (и у вас обычно нет прав доступа к этому сокету)
akira

Ответы:

2

Пожалуйста! Не разрешайте вход с правами root через SSH!

Вместо этого отредактируйте файл sudoers, чтобы разрешить выполнение команды, которую необходимо выполнить как пользователь, под которым вы входите - именно поэтому sudo существует! Затем просто добавьте слово «sudo» к вашей удаленной команде.

пример / и т.д. / sudoers файл:

myuser ALL=(root) NOPASSWD: /path/to/my/command --my --argument --list

Тогда ваша команда SSH:

ssh myuser@remotehost "sudo /path/to/my/command --my --argument --list"

man sudoers а также man ssh предоставит дополнительную информацию.

Flimzy
источник
это больше комментарий к @ The White Phoenix, чем ответ на проблему. Похоже, OP хочет туннелировать соединение от mysql-gui к mysql-daemon, слушающему сокет.
akira
Я думаю, что ответил на вопрос ... Я думаю, что вы, возможно, правы, однако, что ОП задал неправильный вопрос.
Flimzy
1

Возможно просто включить удаленный вход в систему как root Установите пароль пользователя root, а затем ssh как root. Это, как правило, не рекомендуется, поскольку считается небезопасным разрешать вход в систему root через ssh. Тем не менее, есть несколько шагов, которые вы можете предпринять, чтобы повысить безопасность разрешения входа в систему такого типа:

  1. Разрешить только учетные записи root, которые используют как пароли, так и аутентификацию ключей
  2. Разрешить вход в систему только с определенных известных / доверенных IP-адресов
  3. Измените имя пользователя root на что-то уникальное (не совсем уверен, насколько легко это можно сделать)

Этот вопрос ServerFault Есть еще несколько предложений безопасности SSH.

Гораздо более «безопасное» решение - создать учетную запись удаленной системы, которая имеет разрешение только на то, что вам нужно. Это, очевидно, требует некоторой реконфигурации на компьютере, на котором вы входите в систему, и вы не говорите, если это вариант для вас.

James T Snell
источник
На самом деле, как говорит Флимзи ниже, вход в систему с root-доступом через ssh обычно не считается хорошей идеей. И если задающий вопрос действительно задает вопрос только о переадресации портов, то включение корневых входов для этого является интересной идеей. Тем не менее, я хотел опубликовать, что это вариант, так как я думаю, что могут быть законные случаи для этого. Просто будь очень осторожен. И сначала попробуйте другие решения;)
James T Snell