SSH
2023-05-19
Closing a stale SSH connection(关闭过时的 SSH 连接)中介绍了利用 SSH 转义序列来关闭失去响应的 SSH 连接。
也就是说在 SSH 终端输入 ~.
会直接中断 SSH 连接。
经过试验,确实有效(使用 SSH 代理建立的连接就没效)。
所有 SSH 转义序列:
[root@dell ~]# ~?
Supported escape sequences:
~. - terminate connection (and any multiplexed sessions)
~B - send a BREAK to the remote system
~C - open a command line
~R - request rekey
~V/v - decrease/increase verbosity (LogLevel)
~^Z - suspend ssh
~# - list forwarded connections
~& - background ssh (when waiting for connections to terminate)
~? - this message
~~ - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
SSH PuTTY
2022-04-29
openssh 8.2 remove ssh-rsa support for security reasons, suggest to use ssh-ed25519 instead.
SSH 网络代理 Curl
2021-12-03
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 计算机网络
2016-06-24
Windows 主机上做一个代理,映射指定端口到另一台能访问到的主机上。
开发工具 SSH
2016-06-23
总结一下 SSH 相关知识,给新手一点指导,提升其工作效率。
开发工具 SSH XShell 网络代理
2016-06-18
主要讲的是如何通过 SSH 的代理机制实现网络的穿透访问。
TLS SSH OpenSSH OpenSSL
2016-01-30
我仔细阅读原文,然后按照理解对原文做了重新整理。
- SSL 是通讯链路的附加层。可以包含很多协议。HTTPS, FTPS, .....
SSL 是一种国际标准的加密及身份认证通信协议,您用的浏览器就支持此协议。
SSL(Secure Sockets Layer)最初是由美国 Netscape 公司研究出来的,后来成为了 Internet 网上安全通讯与交易的标准。
SSL 协议使用通讯双方的客户证书以及 CA 根证书,允许客户/服务器应用以一种不能被偷听的方式通讯,在通讯双方间建立起了一条安全的、可信任的通讯通道。
它具备以下基本特征:信息保密性、信息完整性、相互鉴定。 主要用于提高应用程序之间数据的安全系数。
SSL 协议的整个概念可以被总结为:一个保证任何安装了安全套接字的客户和服务器间事务安全的协议,它涉及所有TC/IP应用程序。
- SSH 只是加密的 Shell,最初是用来替代 telnet 的。通过 port forward,也可以让其他协议通过 SSH 的隧道而起到加密的效果。
SSH 的英文全称是 Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止 DNS 和 IP 欺骗。
还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。
SSH 有很多功能,它既可以代替 telnet,又可以为 ftp、pop、甚至 ppp 提供一个安全的“通道”。
SSH 是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x 和 2.x。用 SSH 2.x 的客户程序是不能连接到 SSH 1.x 的服务程序上去的。OpenSSH 2.x 同时支持 SSH 1.x 和 2.x。
SSH 的安全验证是如何工作的从客户端来看,SSH 提供两种级别的安全验证。
- 第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。
所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
- 第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。
如果你要连接到 SSH 服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。
服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。
如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。
客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。
与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。
但是整个登录的过程可能需要10秒。
-
OpenSSL 一个 C 语言函数库,是对 SSL 协议的实现。
OpenSSL 很优秀,所以很多涉及到数据加密、传输加密的地方都会使用 OpenSSL 的库来做。
-
OpenSSH 是对 SSH 协议的实现。
OpenSSH 利用 OpenSSL 提供的库。OpenSSL 中也有个叫做 openssl 的工具,是 OpenSSL 中的库的命令行接口。
从编译依赖上看,OpenSSH 依赖于 OpenSSL,没有 OpenSSL 的话 OpenSSH 就编译不过去,也运行不了。
- HTTPS 可以使用 TLS 或者 SSL 协议,而 OpenSSL 是 TLS、SSL 协议的开源实现,提供开发库和命令行程序。
可以理解成所有的 HTTPS 都使用了 OpenSSL。
脚本
# 查看使用了 libssl 库的程序
sudo grep -l "libssl" /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u
References
- http://en.wikipedia.org/wiki/Secure_Shell
- http://baike.baidu.com/view/16147.htm
- http://www.zhihu.com/question/23341334
SSH XShell 开发工具
2016-01-27
算是 SSH 端口转发(隧道技术)的一种利用。
开发工具 SSH
2015-09-29
有同事问我,如何不用密码登录 SSH,让我想起了我这一路的 SSH 登录方式变更。
开发工具 SSH
2015-09-12
1. 下载源码包
https://sourceforge.net/projects/sshpass/
2. 安装
tar -xvf sshpass-1.05.tar.gz
cd sshpass-1.05.tar.gz
./config
make && make install
3. 使用
sshpass -p '111111' ssh 192.168.22.2 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
因为首次访问时需要通过 known_keys 检查,一旦未通过就不会继续执行导致后面的命令失败。
最好加上 StrictHostKeyChecking=no 配置。
如果不希望对方的 host key 被记录可以再加上 UserKnownHostsFile=/dev/null。