为了满足“破强”的需求,在国外的Linux主机(如DreamHost)上创建一个可以通过SSH登录的用户,并使用SSH隧道作为代理,是一种非常流行的方式。
但是所有者常常希望减少用户权限以避免影响系统。
最简单的方法就是阻止用户登录。
其实ssh可以连接sshd但不执行远程命令(默认是启动用户指定的shell),只需使用-N参数即可。
在服务器上创建用户名:添加用户:useradd-s/bin/falseusername,并将用户的shell设置为/bin/false。
这样用户就无法与系统交互。
设置密码:passwdusername
当然,你也可以更改现有用户的用户权限,仅用于TCP转发:
复制代码如下:usermod-s/bin/falseUSERNAME就可以了也可以使用/usr/bin/passwd充当用户的shell,这样用户可以通过登录独立更改密码。
需要注意的是,必须将/usr/bin/passwd行写入文件/etc/shells中。
sshd认证后,会检查/etc/shells文件中是否注册了该shell组,如果注册了,就会fork自己,然后fork出来的子进程会执行该shell组。
ssh的-N参数告诉sshd不需要实现shell。
创建隧道:
复制代码如下:ssh-D1080-qfnNusername@hostname输入要使用的密码(也可以使用密钥认证)。
对于Windows,可以使用plink.exe或MyEnTunnel(MyEnTunnel主要使用plink.exe创建隧道)。
目前帐户用户名可以通过sshd认证使用TcpForwarding,但无法运行shell或与系统交互。
可以用来为国外客户朋友提供日阳。
参数详情:-D1080创建动态隧道并监听本地端口1080。
-安静模式。
-fssh在后台运行,即身份验证后,ssh回退到后台。
-n将stdio重定向到/dev/null,与-f一起使用。
-N不运行远程程序。
这意味着sshd被通知shell组没有运行。
在本地计算机上打开另一个shell窗口,并将本地公钥复制到服务器的authorized_keys文件中。
cat~/.ssh/id_rsa.pub|[email protected]'mkdir-p.sshcat-~/.ssh/authorized_keys'#或者在服务器端运行以下命令echo"ssh-rsa[yourpublickey]"~/.ssh/authorized_keys
然后登录服务器并编辑SSH配置文件/etc/ssh/sshd_config.conf
sudocp/etc/ssh/sshd_config~sudonano/etc/ssh/sshd_config
在配置文件中,更改默认的SSH端口22,可以从1025更改为65536。
之间的任何整数(此处假设为25000)。
Port25000
然后检查是否设置了如下几个设置,确保去掉前面的#号。
Protocol2PermitRootLoginnoPermitEmptyPasswordsnoPasswordAuthenticationnoRSAAuthenticationyesPubkeyAuthenticationyesAuthorizedKeysFile.ssh/authorized_keysUseDNSno
上面基本上不允许root登录和密码登录。
接下来,在配置文件的末尾指定允许登录系统的用户。
AllowUsersbill
保存后,退出编辑文件。
接下来,更改authorized_keys文件的访问权限。
sudochmod600~/.ssh/authorized_keyschmod700~/.ssh/
然后重新启动SSHD。
sudoservicesshrestart#或sudo/etc/init.d/sshrestart
下一步是可选的。
在本地计算机的~/.ssh文件夹中创建一个包含以下内容的配置文件。
Hosts1HostName128.199.209.242UserbillPort25000
最后,在此计算机上打开另一个shell窗口,检查是否可以通过SSH成功登录。
sshs1
第4步:开始设置您的环境
首先,检查服务器的区域设置。
locale
如果结果与en_US.UTF-8不同,建议安装。
sudolocale-genen_USen_US.UTF-8en_CA.UTF-8sudodpkg-reconfigurelocales
然后更新软件。
sudoapt-getupdatesudoapt-getupgr