ssh代理:给系统分配一个无登陆权限的账号来做ssh代理

ssh代理:给系统分配一个无登陆权限的账号来做ssh代理

之前申请了一个免费的亚马逊云服务器作为VPN Server,同时自己电脑使用默认的ubuntu账号进行ssh翻墙:firefox+foxyproxy+ssh简直不要太方便。附上一份本机开启ssh隧道的shell脚本:

今天老婆大人海淘时候抱怨vpn太麻烦,所以就想给她也配一个ssh代理,但又不想给她用默认的ubuntu账号,想着给她一个最低权限的账号。在网上找了半天总算搞定。

环境:

远端服务器:Ubuntu 14.04

本机:MacOS

  1. 在本机生成一对公钥/私钥

    这时会在当前用户的home目录下生成.ssh目录,里面有id_rsa和id_rsa.pub两个文件,id_rsa.pub是之后要放到服务器端的公钥,可以使本机无需密码直接与服务器进行ssh连接。
  2. 在服务器新建一个nologin权限的账号ssh-agent

    这个命令为系统新建了一个用户ssh-agent,同时新建了他所属的ssh-agent用户组,该用户的登陆shell为/usr/bin/nologin,亦即不允许该用户登录。检查/etc/passwd文件,最后一行应为:屏幕快照 2015-09-02 上午2.33.44
  3. 在服务器端创建文件/home/ssh-agent/.ssh/authorized_keys。步骤2中的命令并未创建/home/ssh-agent目录,需自行创建。authorized_keys的意思,即表示受信的ssh公钥
  4. 将本机生成的id_rsa.pub内容添加到服务器的authorized_keys文件中。直接vi打开,复制粘贴就可以了。
  5. 在本机执行以下命令即可开启ssh隧道

    可以使用ps -ef|grep ssh检查该命令是否已在后台执行。
  6. 配置firefox的代理工具,使用127.0.0.1:3128作为ssh代理进行翻墙。屏幕快照 2017-08-02 下午7.55.09

 

 

ps: 但是ssh代理如果在一段时间内无访问的话会自动断线,大概就几分钟吧,这就比较麻烦了。可以修改本机的/etc/ssh/ssh_config文件,让ssh自动发送心跳保持连接状态。

同样,在服务器端也有类似配置/etc/ssh/sshd_config

不过如果本机从待机、休眠状态恢复,ssh连接还是会掉的,所以我后来还是又搭了一个shadowsocks服务器,在本机用shadowsocks客户端,起码不用每次重新拨号,还有pac可用。

One thought on “ssh代理:给系统分配一个无登陆权限的账号来做ssh代理

发表评论

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