分类
Linux

SSH 端口转发

你可能已经熟悉使用 ssh 命令访问远程系统。ssh 命令背后所使用的协议允许终端的输入和输出流经安全通道。但是你知道也可以使用 ssh 来安全地发送和接收其他数据吗?一种方法是使用“端口转发port forwarding”,它允许你在进行 ssh 会话时安全地连接网络端口。本文向你展示了它是如何工作的。

关于端口

标准 Linux 系统已分配了一组网络端口,范围是 0 – 65535。系统会保留 0 – 1023 的端口以供系统使用。在许多系统中,你不能选择使用这些低端口号。通常有几个端口用于运行特定的服务。你可以在系统的 /etc/services 文件中找到这些定义。

你可以认为网络端口是类似的物理端口或可以连接到电缆的插孔。端口可以连接到系统上的某种服务,类似物理插孔后面的接线。一个例子是 Apache Web 服务器(也称为 httpd)。对于 HTTP 非安全连接,Web 服务器通常要求在主机系统上使用端口 80,对于 HTTPS 安全连接通常要求使用 443。

当你连接到远程系统(例如,使用 Web 浏览器)时,你是将浏览器“连接”到你的主机上的端口。这通常是一个随机的高端口号,例如 54001。你的主机上的端口连接到远程主机上的端口(例如 443)来访问其安全的 Web 服务器。

那么,当你有这么多可用端口时,为什么还要使用端口转发呢?这是 Web 开发人员生活中的几种常见情况。

分类
Linux 笔记

SSH Socket 代理

前几天发下shadowsocks不能用了,猜测是“两会”期间加强了GFW。我用的是亚玛逊云vps,虽然shadowsocks不能使用,但ssh可以正常连接。于是使用ssh隧道开启socks代理。

ssh -i LightsailDefaultKey-us-east-1.pem -N -f -C -D 0.0.0.0:1080 用户名@主机ip

参数说明:

-q 静默运行
-N 是不执行远端命令
-f 后台运行
-C 压缩
-i ssh验证密钥

然后把这段命令加入启动脚本即可。

连接ssh我使用的是密钥验证,如果使用密码验证,加入启动脚本是无效的,因为ssh自带参数不能输入密码。使用sshpass可以做到。

安装sshpass:

apt install sshpass

sshpass命令使用很简单,sshpass -p 密码,后面接着原来ssh连接命令就行了:

sshpass -p 密码 ssh -i LightsailDefaultKey-us-east-1.pem -N -f -C -D 0.0.0.0:1080 用户名@主机ip

命令启动成功后就在本地打开了一个socks5代理,端口是1080。然后使用客户端代理配置,是可以访问google、facebook的。

分类
Linux 笔记

Linux SSH客户端记住密码

在windows下连接ssh有xshell、secureCRT等功能强大的客户端,不仅能记住密码,也能很好管理服务器。在linux下虽然有openssh,但如果需要管理很多服务器,每个服务器连接时都需要输入密码,不能记住密码是个很头痛的事。

有人说可以在ssh服务器上配置证书授信,但这种方式有不省缺点。
1.不安全,拿到证书的人在任意一台机器上可以登录。
2.如果ssh服务器是其他人维护或提供,再让别人去变更,不合理。
其实linux下做到记住密码有很方便我工具:sshpass