我知道我需要编辑相关的〜/ .ssh / authorized_keys文件,但我不知道什么内容放在那里(除了公共密钥)。
具体来说,我有一个redis服务器上的“somehost”绑定到localhost:6379,我希望通过ssh通道安全地共享到其他主机有密钥文件,并将ssh与:
$ ssh -i keyfile.rsa -T -N -L 16379:localhost:6379 someuser@somehost
这将导致redis服务器上的“localhost”端口6379“somehost”在执行ssh命令的主机上本地显示,重新映射到“localhost”端口16379。
在远程“somehost”这里是我用于authorized_keys:
cat .ssh/authorized_keys (portions redacted) no-pty,no-X11-forwarding,permitopen="localhost:6379",command="/bin/echo do-not-send-commands" ssh-rsa rsa-public-key-code-goes-here keyuser@keyhost
no-pty启动了大多数想要打开终端的ssh尝试。
permitopen解释允许转发哪些端口,在这种情况下端口6379是我要转发的redis服务器端口。
如果有人或某物设法通过ssh -T或其他方式向主机发送命令,则command =“/ bin / echo do-not-send-commands”回显“do-not-send-commands”。
从最近的Ubuntu man sshd,authorized_keys /命令描述如下:
command=”command”
Specifies that the command is executed whenever this key is used
for authentication. The command supplied by the user (if any) is
ignored.
尝试使用scp安全文件复制也将失败,回声“do-not-send-commands”我发现sftp也失败与此配置。
我认为受限壳建议,在一些以前的答案,也是一个好主意。此外,我同意这里详述的一切可以通过读取“man sshd”并在其中搜索“authorized_keys”来确定,