ssh详解,ssh密钥生成,服务器认证和登陆

是这样的,想请说下,ssh详解,ssh密钥生成,服务器认证和登陆
最新回答
三生路

2024-09-29 08:58:21

SSH key简介

下面这个解释可能更加通俗一些:

SSH共有两种登录方式:1. 口令验证登录;2. 密钥验证登录。口令验证登录过程中,客户端生成口令(服务器密码),并用服务器发来的公钥加密,发送给服务器。服务器通过私钥解密,拿到口令(服务器密码),如果正确则认证成功。密钥验证登录过程中,客户端生成公钥和私钥,将公钥提前部署在服务器上。客户端发起连接请求,服务器随机生成一个字符串,用本地的公钥加密,发送给客户端。客户端通过私钥解密,将解密后的字符串发送给服务器。服务器验证本地字符串和客户端发来的字符串的一致性,如果通过,则认证成功。

ssh生成的密钥类型:推荐使用ED25519密钥类型

注意:密钥用于鉴权,请谨慎保管。公钥文件以 .pub 扩展名结尾,可以公开给其他人,而没有 .pub 扩展名的私钥文件不要泄露给任何人!

配置ssh key登陆服务器的流程

生成ssh key的文件,包括公钥和私钥

警告:密钥用于鉴权,请谨慎保管。公钥文件以 .pub 扩展名结尾,可以公开给其他人,而没有 .pub 扩展名的私钥文件不要泄露给任何人!

使用ssh-copy-id将公钥部署到服务器上

ssh-copy-id -i .ssh/id_ed25519.pub 用户名@服务器地址 -p 端口号

需要注意:

ssh.com/academy/ssh/cop...

ssh远程登陆服务器

设置好密码以后,可以使用ssh命令登陆到服务器,进行远程操作。可以有两种方法:

ssh连接服务器命令

如果直接linux下或者git bash使用ssh命令连接服务器即可

ssh 用户名@服务器地址

ssh 用户名@服务器地址 -p 3333

ssh -J 跳板机用户名@跳板机地址 用户名@服务器地址

dev.to/claudiohigashi/s...

ssh隧道(SSH tunneling)

应用场景:当你想要在你的本地电脑上,打开来自服务器的jupyter notebook时,你需要用到ssh tunneling。命令如下:

jupyter notebook --no-browser --port=8080

ssh -L 8080:localhost:8080 服务器用户名@服务器地址

ssh -g -N -L 8888:localhost:8888 root@172.20.148.199 ssh -NL 8888:localhost:8888 root@172.20.148.199 ssh -L 8888:localhost:8888 root@172.20.148.199

解释一下上面的事情:

这时转发数据流是:client上的应用客户端将数据发送到本地的8080端口上,client上的ssh客户端将本地8080端口收到的数据加密后发送到server端的ssh server上,ssh server会解密收到的数据并将之转发到监听的8080端口,最后再将从http server返回的数据原路返回以完成整个流程。

也就是说:

ref:medium.com/@apbetahouse...

lixueduan.com/posts/lin...

本地转发(-L)和远程转发(-R)

我们上面说的,叫做本地转发,从命令也可以看出来,因为我们用了-L命令。那怎么区分本地转发和远程转发呢

ssh除了支持本地端口转发,还支持远程端口转发。顾名思义,远程端口转发表示的是将远程端口的数据转发到本地。

如果服务器可以连接到你的local电脑,而你的电脑无法连接到服务器的话,可以使用远程转发。远程转发需要在服务器上执行命令

SSH隧道:端口转发功能详解 - DoubleLi - 博客园 (cnblogs.com)