跳转至

SSH

期望在前、已有服务在后

ssh -CNf(R L) 即将建立IP:端口:已有IP:端口
反向代理 -R 把本地的端口搬运到远端
正向代理 -L 把远端端口的搬运到本地
Sock5 -D 把自己当成中转站
1
2
3
4
-f 参数表示在后台运行SSH进程,
-N 参数表示不执行远程命令,
-R 参数表示反向隧道,将远程主机的某个端口映射到本地主机的某个端口。
-C 选项用于通过压缩数据来启用 SSH 连接的压缩

SSH配置说明

1
2
3
4
PermitRootLogin yes # 运行root登录
PasswordAuthentication no # 禁止使用密码登录,
GatewayPorts no # 转发功能、使用代理时可以设置yes 否则监听127.0.0.1
UseDNS no # 当此机器dns出现问题,导致登录时间较长,此时可以通过替换其他dns、或者处理这个

SSH反向代理

Reverse SSH Tunneling是一种通过SSH隧道在远程服务器上公开本地端口的方法。

反向代理是服务器的代理

反向SSH隧道是将本地服务公开给远程服务器使用。

ssh -f -N -R 远程主机的某个端口:0.0.0.0:本地主机的某个端口 -g 远程服务器的用户名@远程服务器的IP地址
-g 有效需要在(/etc/ssh/sshd_config)中添加 GatewayPorts yes 后重启sshd

SSH正向代理

正向代理 是客户端的代理

将远程的8888端口的服务拖到本地的9900端口,访问本地的 9900 == 访问远程的 8888 将远程的服务搬运到本地

我们要去访问某个网站,我们直接访问不通,那么我们就可以找一个代理服务器为我们服务,我们通过代理服务器请求到这个网站。对于这个网站而言他只知道有一个服务器访问了自己,并不知道你访问了他。

1
2
3
4
5
6
ssh -f -N -L 本地主机的某个端口:远程主机的IP地址:远程主机的某个端口 远程服务器的用户名@远程服务器的IP地址

ssh -fL 0.0.0.0:9900:0.0.0.0:8888 root@mibo.fun

访问本地的 9900等效于访问远程的 120.79.196.21:80
ssh -NfL 0.0.0.0:9900:0.0.0.0:80 root@120.79.196.213

SOCKS5 服务

使用浏览器的插件 switchyomega 配置socks5 代理 ,就可以相当于后面的网页都是使用 120.79.196.213 来访问的 ssh -NfCD 0.0.0.0:8850 root@120.79.196.213

不同域名不同密钥

~/.ssh/config
1
2
3
4
5
6
7
8
9
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

ssh 配置只允许mibo 使用密码登录,其他只能使用密钥

/etc/ssh/sshd_config
1
2
3
4
5
6
7
PasswordAuthentication yes

Match User mibo
    PasswordAuthentication yes

Match all
    PasswordAuthentication no

ssh 配置只允许127.0.0.1 使用密码登录,其他只能使用密钥

/etc/ssh/sshd_config
1
2
3
4
5
6
7
Match Address 127.0.0.1
    PasswordAuthentication yes
    PubkeyAuthentication yes

Match all
    PasswordAuthentication no
    PubkeyAuthentication yes