打造一个支持 ssh 访问的个人网站

愚人节看到了 coding.net 推出的[命令行界面]
(https://segmentfault.com/a/1190000004834909)

打造一个支持 ssh 访问的个人网站_第1张图片
command line interface

是不是非常酷,于是我打算依葫芦画瓢,让我的个人网站不但可以被浏览器访问,也可以用 ssh 链接的方式来访问。

先看效果图:

打造一个支持 ssh 访问的个人网站_第2张图片
preview

下面是实现步骤(当前只给出最小实现说明):

准备服务器与域名

由于 HTTPS 的原因,我已经把自己的博客转到了独立 VPS 上。然后到托管域名的管理界面指定一个 A Record 来专门用于 ssh 登录(可选), 这里我选择的是 cli.songofcode.com

A Record

建立访客用户

在服务器上创建一个访客用户,这里我使用的是 visitor,你可以选用任何名字,比如 guest

创建时先随便指定一个密码,创建好之后,先试试在本机用密码 ssh 登录服务器,确保可以登录后,使用 passwd -d visitor 来删除这个用户的密码,此时再次尝试登录会发现服务器依然询问用户密码,这时需要修改 /etc/ssh/sshd_config 文件,修改 PermitEmptyPasswordsyes 以及 UsePAMno。然后再尝试 ssh [email protected],应该就可以直接无密码登录了。

好了,接下来就是定义 api 了,出于演示目的,我这里只打算启用 abouthelpposts 这几个命令,另外出于安全考虑,虽然这不是一个 root 用户,但是还是要禁用其他所有的 shell 命令,这里我使用 rbash,来限制 bash 的使用,配置用户的 bashrc 如下:

set -r
alias help='echo "available commands: help,about,posts" '
alias about='echo "this is my personal website" '
alias posts='echo "please visit http://www.jianshu.com/users/yLzRq4/latest_articles" '

可以看到, 使用 set -r 来启用 restricted 模式,另外设置了三个 alias 来作为 api 供调用。

做完这些,你就可以在 web 版的网页上标注上,『欢迎使用 ssh 登录本站』的字样了!

你可能感兴趣的:(打造一个支持 ssh 访问的个人网站)