我想在远程服务器上设置通往 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
每次都会把它踢出去。