create restricted linux user for ssh tunnel


Tags Linux SSH tunnel By ox0spy On 2017-03-01

由于国内访问一些网站特别慢,所以,使用一台新加坡节点的机器做代理,提高浏览器、mobile访问网站速度。

最近发现访问AWSEC2也特别慢,所以,希望通过该代理加速SSH连接速度,ProxyCommand ssh -q -W %h:%p proxy这行加入希望访问的主机~/.ssh/config中即可。

但,如果团队成员也有此需求,但又不想让团队成员有ssh登陆代理主机的权限,那么就继续往下看。

在代理主机上配置受限用户、sshd及团队成员的ssh公钥

创建用户

$ sudo addgroup proxy
$ sudo useradd -m -s /usr/sbin/nologin -g proxy proxy

注: 只创建用户而不为用户生成密码;ssh应该配置成只能通过ssh key认证

修改sshd config

修改 /etc/ssh/sshd_config 配置

PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
Match User proxy
  AllowTcpForwarding yes
  X11Forwarding yes
  PermitTunnel yes
  AllowAgentForwarding yes

修改 ~proxy/.ssh/authorized_keys,配置团队成员ssh公钥

将需要使用该代理主机做ssh加速的用户 ssh public key 加入 ~proxy/.ssh/authorized_keys

本机ssh config配置

添加代理主机信息并使用代理主机加速AWS主机ssh访问。

修改 ~/.ssh/config,添加代理主机信息:

Host proxy
    Hostname 1.2.3.4  # 填写自己的代理主机IP
    User proxy        # 修改为在代理主机上创建的用户名
    Port 22           # 修改为自己代理主机的ssh监听端口
    IdentityFile ~/.ssh/id_rsa  # 修改为添加到代理主机上的ssh public key对应的ssh private key

修改 ~/.ssh/config,让AWS主机通过代理主机中转,提高访问速度。

Host aws-host
    Hostname 1.2.3.4  # 填写自己的aws ec2主机IP
    User ec2-user     # 修改为在代理主机上创建的用户名
    Port 22           # 修改为自己代理主机的ssh监听端口
    IdentityFile ~/.ssh/id_rsa  # 修改为添加到aws ec2主机上的ssh public key对应的ssh private key
    ProxyCommand ssh -q -W %h:%p proxy  # 这句话的意思就是通过代理主机做中转,然后访问aws ec2

注:配置和之前类似,只是多了一条 ProxyCommand

验证

登陆代理主机:

$ ssh proxy
This account is currently not available.

注:
1. 因为代理主机上的`proxy`用户使用`/usr/sbin/nologin`做shell,所以会有这样的提示。
2. 这句话标明`ssh key`认证成功。

登陆aws-host

$ ssh aws-host

注: 应该可以正常登陆并明显感觉访问速度更快。