如何创建只能访问MySQL的SSH用户?

如何创建只能访问MySQL的SSH用户?

我想在远程服务器上设置通往 MySQL 数据库的 SSH 隧道。我是否可以创建一个仅具有访问 MySQL 所需的最低权限的 SSH 用户(例如使用 HeidiSQL 或 Sequel Pro 等数据库管理应用程序)?我不希望用户能够访问其他任何内容。

答案1

您可以添加没有有效登录 shell 的用户:

# useradd -s /sbin/nologin dbuser

设置他们的密码:

# passwd dbuser

或者将其保留为未设置并创建 SSH 密钥:

(on local machine)
$ ssh-keygen

(on remote machine)
# su -s /bin/bash - dbuser
$ cat local_id_rsa.pub >>~/.ssh/authorized_keys

此时,您可以使用SSH来创建隧道:

ssh -TfnN -L localhost:<local_port>:localhost:<db_server_port> dbuser@remote_host

如果您使用 SSH 密钥进行身份验证,这将自动起作用,否则您需要输入密码。 ssh 在验证后将立即进入后台,并且不会尝试执行任何命令,但隧道将打开。在本地数据库客户端中输入“localhost”和 <local_port> 值,它将起作用。然而:

$ ssh dbuser@remote_host
dbuser@remote_host's password:
Last login: Fri Oct  9 09:27:24 2015 from local_host
This account is currently not available.
Connection to remote_host closed.

SSH不会以远程用户身份执行任何shell或命令;/sbin/nologin每次都会把它踢出去。

相关内容