#10 PuTTY: Server refused our key
SSH PuTTY 2022-04-29openssh 8.2 remove ssh-rsa support for security reasons, suggest to use ssh-ed25519 instead.
coding in a complicated world
openssh 8.2 remove ssh-rsa support for security reasons, suggest to use ssh-ed25519 instead.
ssh user@host curl http://anyurl
先建立 SSH 代理,在 curl:
ssh -D 19888 -CNfq user@host
curl -x socks5h://localhost:19888 http://anyurl
后面的 CNfq 也是非常好记的,懂的懂。
至于什么含义,可以 man ssh
。
Windows 主机上做一个代理,映射指定端口到另一台能访问到的主机上。
总结一下 SSH 相关知识,给新手一点指导,提升其工作效率。
主要讲的是如何通过 SSH 的代理机制实现网络的穿透访问。
算是 SSH 端口转发(隧道技术)的一种利用。
有同事问我,如何不用密码登录 SSH,让我想起了我这一路的 SSH 登录方式变更。
sshpass
网络代理是一种常见的网络技术,其中 SSH 由于其普遍性,用来代理是最顺手不过的。
助记:
DLR
独立日, 分别对应三种最常见的代理模式 Dynamic, Local, RemoteProxyPort:DestHost:DestPort User@ProxyHost
比如有三台机器 A, B, C, 其中 A 是本地机器,B 是代理机器,C 是目标机器(注意:A,B,C 可以是同一台机器,或者其中任意两个是同一台机器):
在本地机器上建立隧道,代理机器做跳板,将本地端口绑定到目的机器端口:
// A:80 => B => C:80
ssh -L 80:C:80 root@B
将代理机器的指定端口绑定到目的机器:
// B:80 => C:80
ssh -R 80:C:80 root@B
上面两种都是端口映射模式,应该能够满足所有端口对端口的代理。
最后的 -D
就是动态代理,类似 NAT,将发往指定端口的数据转发到出去。
ssh -D 80 root@B
这个时候,如果设置系统网络代理为 socks5://B:80
,然后本地的所有网络请求都会经过 B 中转,比如我访问 C:80,C 服务器接受到的是来自 B 的访问。
PS: 这个 socks5 要是展开带另起一篇,这里就只需要知道,这种代理的方式有一个专门的名字叫 socks 就行了。
如果在 Windows 上,PuTTY 就是一个很好的 SSH 客户端,也可以从来建立代理,这就不展开讲了。
下次我研究研究 PuTTY,另外再发一篇文章。
Update @ 2021-10-01:
- 有一些 Linux 命令直接支持 socks5 代理,比如 wget, curl。
- 编程时,发起网络请求也可以设置 socks5 代理。
Update @ 2016-09-16:
Update @ 2017-06-09: