我想为我的 SSH 服务器提供 SOCKS 代理,但不启用 shell 访问。我创建了一个用户并将其 shell 更改为 /usr/bin/nologin,但这意味着当我通过 SSH 进入该用户时,PuTTY 会立即关闭... 有什么方法可以维持会话,以便我可以使用 SOCKS 隧道吗?
答案1
如果只使用公钥认证是可以接受的,那么一种方法就是将指定的公钥条目添加到您的authorized_keys
文件,使用command
选项来限制可以执行的操作。例如:
command="sleep 100000000",no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA...
使用此配置,每当您使用此特定公钥登录时,sshd
都会自动运行该命令sleep 100000000
(本质上是无限期等待),但不允许运行任何其他命令。但是,您仍然应该能够使用 SOCKS 代理功能。有关该选项的更多详细信息command
,请参阅 sshd(8) 手册页。