建立只能使用ssh的TCP转发功能的系统账户

其实 ssh 可以连接到 sshd 但是不执行远程命令(默认是启动用户设定的 shell ),使用 -N 参数即可。

在服务器上建一个 username :
添加用户:useradd -s /bin/false  username,将用户的shell设置成/bin/false。这样用户就无法与系统进行交互。
设置密码:passwd username

小技巧:
也可以使用 /usr/bin/passwd 作为用户的 shell ,这样用户就可以通过登录而来自主修改密码。需要注意的是,需要将 /usr/bin/passwd 这一行写进 /etc/shells文件。
sshd 认证通后之后,会检查设定的 shell 是否登记在 /etc/shells 文件中,若已经登记,则fork自己,然后fork出来的子进程再exec 设定的 shell 。而 ssh 的 -N 参数,则是告诉 sshd 不需要执行 shell。

建立Tunnel:

ssh -D 1080 -qfnN    username@hostname

输入密码即可使用(也可以用key认证)。

Windows的话,可以使用plink.exe或者MyEnTunnel(MyEnTunnel 本质上也是使用plink.exe来建立Tunnel)。

此时账号username 可以通过sshd的认证使用 TcpForwarding ,但是不能运行 shell,不能与系统交互。刚好可以用来为朋友提供国外的代理翻墙。

参数详解:
-D 1080 建立动态Tunnel,监听在本地1080端口;
-q  安静模式;
-f   ssh在后台运行,即认证之后,ssh退居后台;
-n  将 stdio 重定向到 /dev/null,与-f配合使用;
-N  不运行远程程序,即通知 sshd 不运行设定的 shell。

建立只能使用ssh的TCP转发功能的系统账户》有4个想法

    1. Derek Wei 文章作者

      这是意外,极大的意外…………
      其实我也算是被Google耍的对象,我认为保持几天就算了,哪知道还保持这么久…………
      详情请点击此

      回复

回复 悦音志 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注