<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[观夏Note]]></title> 
<link>//gm.angeldm.com/index.php</link> 
<description><![CDATA[新技术番]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[观夏Note]]></copyright>
<item>
<link>//gm.angeldm.com/post//</link>
<title><![CDATA[最小化权限的ssh账号-只能使用TCP转发]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[网络应用]]></category>
<pubDate>Fri, 30 Jul 2010 06:18:25 +0000</pubDate> 
<guid>//gm.angeldm.com/post//</guid> 
<description>
<![CDATA[ 
	在国外的Linux主机上（比如 DreamHost ）上建个可 ssh登录的用户，使用 ssh 的 Tunnel 来作代理是十分常见的方法。<br/><br/>但是主人往往又想最小化用户权限，以避免对系统造成影响。最简单的办法就是，禁止用户登录。<br/><br/>其实 ssh 可以连接到 sshd 但是不执行远程命令（默认是启动用户设定的 shell ），使用 -N 参数即可。<br/><br/>在服务器上建一个 username ：<br/>添加用户：useradd -s /bin/false&nbsp;&nbsp;username，将用户的shell设置成/bin/false。这样用户就无法与系统进行交互。<br/>设置密码：passwd username<br/><br/>小技巧：<br/>也可以使用 /usr/bin/passwd 作为用户的 shell ，这样用户就可以通过登录而来自主修改密码。需要注意的是，需要将 /usr/bin/passwd 这一行写进 /etc/shells文件。<br/>sshd 认证通后之后，会检查设定的 shell 是否登记在 /etc/shells 文件中，若已经登记，则fork自己，然后fork出来的子进程再exec 设定的 shell 。而 ssh 的 -N 参数，则是告诉 sshd 不需要执行 shell。<br/><br/>建立Tunnel：<br/><br/>ssh -D 1080 -qfnN&nbsp;&nbsp;&nbsp;&nbsp;username@hostname<br/><br/>输入密码即可使用（也可以用key认证）。<br/><br/>Windows的话，可以使用plink.exe或者MyEnTunnel（MyEnTunnel 本质上也是使用plink.exe来建立Tunnel）。<br/><br/>此时账号username 可以通过sshd的认证使用 TcpForwarding ，但是不能运行 shell，不能与系统交互。刚好可以用来为朋友提供国外的代理。<br/><br/>参数详解：<br/>-D 1080 建立动态Tunnel，监听在本地1080端口。<br/>-q&nbsp;&nbsp;安静模式。<br/>-f&nbsp;&nbsp; ssh在后台运行，即认证之后，ssh退居后台。<br/>-n&nbsp;&nbsp;将 stdio 重定向到 /dev/null，与-f配合使用。<br/>-N&nbsp;&nbsp;不运行远程程序。即通知 sshd 不运行设定的 shell。
]]>
</description>
</item><item>
<link>//gm.angeldm.com/read.php?&amp;guid=0#topreply</link>
<title><![CDATA[[评论] 最小化权限的ssh账号-只能使用TCP转发]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>//gm.angeldm.com/read.php?&amp;guid=0#topreply</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>